MyBatis工具类的封装

来源:互联网 发布:阿里云 搭建java服务器 编辑:程序博客网 时间:2024/06/01 09:08

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<SqlSession>  tl=new  ThreadLocal<SqlSession>();       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文件中直接使用

这里写图片描述
b)配置内容参数化
问题:在mybatis-config文件中有经常需要修改的字符串相关(数据库相关)
解决方案:把在mybatis-config配置文件中经常需要修改的字符串信息,提取到小配置文件中
I.读取小配置文件
这里写图片描述
Ii.${key}获取小配置文件中对应的值
这里写图片描述

原创粉丝点击