发表于: 2017-09-14 19:43:23
1 713
今天完成的任务
首先写了拿注解写了一个mybatis
实现了增查
先是写了一个功能的接口,这个接口会被mybatis自动调用。。。add(Category category)是输入了一个Category格式的变量
public interface CategoryMapper {
@Select(" select * from category_ ")
public List<Category> list();
@Insert(" insert into category_ ( name ) values (#{name}) ")
public int add(Category category);
}
其实我试过标签就是做标记的 无论标签的前缀是Select还是Insert其实目前看都不影响..
然后是做变量的映射类。。这个做过几百次了
public class Category {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Category [id=" + id + ", name=" + name + "]";
}
}
重写了toString方法,不过重写不重写不影响这个程序..
再写关于连接数据库的xml
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="CategoryMapper"/><!--这句话是把本class导入到接口-->
</mappers>
</configuration>
死格式,需要用
mapper class="CategoryMapper"
把xml的信息和接口联系起来
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
//List<Category> cs=session.selectList("listCategory");用注解的方式会少这样一句话
CategoryMapper mapper = session.getMapper(CategoryMapper.class);//用注解就会多这句话
Category d = new Category();
d.setName("新增加的Category");
mapper.add(d);
List<Category> cs = mapper.list();
for (Category c : cs) {
System.out.println(c.getName());
}
}
大体都是死格式,值得说明的是以下两点
1.
//List<Category> cs=session.selectList("listCategory");用注解的方式会少这样一句话
CategoryMapper mapper = session.getMapper(CategoryMapper.class);//用注解就会多这句话
两句话都是联系sql语句,但是不太懂机理
2.
Category d = new Category();
d.setName("新增加的Category");
mapper.add(d);
是声明一个caregory的构造方法,然后调用里面的setName
mapper.add()是调用这句话
@Insert(" insert into category_ ( name ) values (#{name}) ")
public int add(Category category);
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
mapper.add("dasda");
@Insert(" insert into category_ ( name ) values (#{name}) ")
public int add(String category);
用string一样可以输入,不过这是因为我这个数据库的表只有name和id(自增)两个数值,其实多加一个输入的变量应该也可以
把mybatis-spring用单元测试的方式写出
本来是打算先用main方法做一些,但是无果时候询问53师兄说,一般不会这么麻烦,反而是舍近求远..我就没接着搞
故而用的是单元测试
和上面的相比只需要把xml修改
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:annotation-config />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/how2java?useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="typeAliasesPackage" />
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="mapper"/>
</bean>
即可
单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MybatisTest {
@Autowired
private CategoryMapper categoryMapper;
@Test
public void testAdd() {
Category category = new Category();
category.setName("new Category");
categoryMapper.add(category);
}
@Test
public void testList() {
System.out.println(categoryMapper);
List<Category> cs=categoryMapper.list();
for (Category c : cs) {
System.out.println(c.getName());
}
}
明天要做的事
1.现在写的代码文件构造很简陋,明天按师兄给的文件构造修改一下。
2.把mybatis-spring的jdbc改成连接池
3.尽快把任务一的最后几个小项目解决
遇到的问题
关于手工搭建mybatis-spring的工作没有成功
还是对junit理解不深刻
收获
评论