发表于: 2017-09-14 19:43:23

1 712



今天完成的任务


首先写了拿注解写了一个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&amp;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理解不深刻



收获





返回列表 返回列表
评论

    分享到