今天看了一下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接口