MyBatis文档观后整理

时间:2022-10-06 05:37:44

今天看了一下mybatis的官方文档,下面是自己粗略整理的一些常用知识点

1)maven整合mybatis

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

2)代码示例:

InputStream inputStream = Resources.getResourceAsStream("spring-mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sessionFactory.openSession();
 

CustomerMapper mapper = session.getMapper(CustomerMapper.class);
Customer customer = mapper.queryCustBaseByCustId(96L);
System.out.println(customer.getAccountName());

注释:SqlSessionFactoryBuild建议单例

   SqlSessionFactory作用于应用域

   SqlSession 以及 Connection 作用于方法域,用完就close掉,每个线程都应该有它自己的 SqlSession 实例

3)缓存

mybatis缓存默认是没有开启的,除了局部的Session缓存(一级缓存),要开启二级缓存,在SQL映射文件中

添加 <cache />,以及相对应的model类要是实现Serializable接口

==> 映射语句文件中的所有的select语句将会被缓存

==> 映射语句文件中的所有的insert update delete 语句将会刷新缓存

==> 缓存会使用LRU(least recently used 最近最少使用的)算法回收

==> 根据时间表,缓存不会以任何时间顺序来刷新

==> 缓存会存储列表集合或对象(无论查询方法返回什么)的1024个引用

==> 缓存会被视为read/write 的缓存,意味这对象检索不是共享的,而且可以安全的被调用者修改,而不干扰其他调用者或者线程所做的修改

自定义缓存

  <cache type = "com.xxx.xxx.mycache"/>,其中com.xxx.xxx.mycache类必须实现 org.mybatis.cache.cache接口