美文网首页
Mybatis_笔记

Mybatis_笔记

作者: bboymonk | 来源:发表于2017-03-10 11:52 被阅读0次

    mybatis-config.xml

    1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
     4  
     5  <configuration>
     6      <properties resource="jdbc.properties">
     7          
     8      </properties>
     9      <environments default="development">
    10          <environment id="development">
    11             <transactionManager type="JDBC"/>         
    12              <dataSource type="POOLED">
    13                  <property name="driver" value="${driver}"/>
    14                  <property name="url" value="${url}"/>
    15                  <property name="username" value="${username}"/>
    16                  <property name="password" value="${password}"/>
    17              </dataSource>
    18          </environment>
    19      </environments>
    20      
    21      <mappers>
    22          <mapper resource="dao/UserMapper.xml"/>
    23      </mappers>
    24  </configuration>
    

    UserMapper.xml

    1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
     3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
     4 
     5 <mapper namespace="dao.UserMapper">
     6     <select id="count" resultType="int">
     7         select count(1) from user
     8     </select>
     9     
    10 </mapper>
    

    UserTest

    1 package test;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import java.io.IOException;
     6 import java.io.InputStream;
     7 
     8 import org.apache.ibatis.io.Resources;
     9 import org.apache.ibatis.session.SqlSession;
    10 import org.apache.ibatis.session.SqlSessionFactory;
    11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    12 import org.apache.log4j.Logger;
    13 import org.junit.Test;
    14 
    15 public class UserTest {
    16     private Logger logger = Logger.getLogger(UserTest.class);
    17         
    18     @Test
    19     public void countTest() {
    20         String resource = "mybatis-config.xml";
    21         int count = 0;
    22         SqlSession sqlSession = null;
    23         //1,读取配置文件mybatis-config.xml输入流
    24         try {
    25             InputStream is = Resources.getResourceAsStream(resource);
    26             //2,创建sqlsessionfactory
    27             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
    28             //3,创建sqlsession
    29             sqlSession =     factory.openSession();
    30             //4,调用mapper配置文件
    31             count = sqlSession.selectOne("dao.UserMapper.count");
    32             
    33             logger.debug(count);
    34         } catch (IOException e) {
    35             e.printStackTrace();
    36         }finally{
    37             sqlSession.close();
    38         }
    39         
    40         
    41         
    42     }
    43 
    44 }
    

    SqlSessionFactory必须是单例,所以可以用下面这个方法:

    静态方法:在项目启动时就会被初始化,所以可以直接调用。
    静态代码块:在项目启动时主动执行。



    与JDBC的对比:

    连表查询时,返回多张表的数据时:

    1,可以自定义一个resultMap,这个方式是要多返回Role表里的roleName字段,所以在User类里加了个roleName属性。

    2,可以自定义一个resultMap,这个方式是要多返回Role表里的多个字段,所以在User类里加了内部类(Role类型),<association>标签关联Role。

    3,根据User表的ID查询Address表里的数据,一对多。可以用如下方法。

    动态标签之forEach:

    这个是要更新50000条数据,1000条一执行。
    如果List,collection="list",如果是Array,collection="array"。
    item就是定义的集合或数组名字,也可以自定义,这里叫Item。




    mybatis缓存:

    一级缓存作用域是session,二级缓存是全局共享。



    让mybatis后以输出SQL语句,用的是Log4j

    相关文章

      网友评论

          本文标题:Mybatis_笔记

          本文链接:https://www.haomeiwen.com/subject/zomngttx.html