MyBatis工具类的封装

a)Resources类
特点:读取MyBatis-config配置文件 IO
建议:一次性通过IO读取所有的数据
b)SqlSessionFactory类
特点:创建SqlSession 重量级的资源 内存占用多 功能多
建议: 每一个应用只创建一个 线程安全
c)SqlSession类
特点:轻量级资源 不能被多线程共享
1.创建DAO接口的实现类(动态代理设计思想 动态字节码技术)
2.SqlSession内部封装Connection 一个SqlSession对应一个Connection
3.事务控制 SqlSession.commit SqlSession.rollback

public class MyBatisUtil {
          public  static   SqlSessionFactory sqlSessionFactory;
          public  static   ThreadLocal  tl=new  ThreadLocal();
       static{
           InputStream stream=null;
        try {
             //读取mybatis-config配置文件       
            stream = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactory对象
            sqlSessionFactory= new  SqlSessionFactoryBuilder().build(stream);  
        } catch (IOException e) {
            e.printStackTrace();
            throw  new  RuntimeException("读取配置文件失败");
        }finally{
            try {
                stream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }       
       }
      //获取SqlSession对象
       public   static   SqlSession   openSqlSession(){
           SqlSession sqlSession = tl.get();
           if(sqlSession==null){
               sqlSession=sqlSessionFactory.openSession();
               tl.set(sqlSession);
           }
         return  sqlSession; 
       }
      //关闭SqlSession对象
      public  static  void    closeSqlSession(){
             //获取SqlSession
            SqlSession sqlSession = openSqlSession();
            sqlSession.close();
             tl.remove();
      }
     //事务提交
      public  static   void  commit(){
               SqlSession sqlSession = openSqlSession();
               sqlSession.commit();
               closeSqlSession();  
      }
      //事务回滚
      public  static  void   rollback(){
            SqlSession sqlSession = openSqlSession();
            sqlSession.rollback();
            closeSqlSession();
      }
     //获取DAO实现
      public  static  Object    getMapper(Class  clazz){
            SqlSession sqlSession = openSqlSession();
            return  sqlSession.getMapper(clazz);
      }


}

MyBatis-config中的配置信息

别名TypeAlias可以在mapper文件中直接使用

MyBatis工具类的封装_第1张图片
b)配置内容参数化
问题:在mybatis-config文件中有经常需要修改的字符串相关(数据库相关)
解决方案:把在mybatis-config配置文件中经常需要修改的字符串信息,提取到小配置文件中
I.读取小配置文件
MyBatis工具类的封装_第2张图片
Ii.${key}获取小配置文件中对应的值
MyBatis工具类的封装_第3张图片

你可能感兴趣的:(Android框架,java,web之Mybatis)