1.mybatis的缓存机制
1.1一级缓存:直观的理解就是某个sqlseesion的一个Map,结果用于存储一定数量的查询结果,在sqlseesion进行更新,删除操作时,mybatis会清空一级缓存,保持数据的一致性。值得注意的是mybatis与spring结合,一级缓存当sqlsession的事务提交了,spring将会关闭sqlseesion也就是将此sqlseesion的缓存清空。
1.2二级缓存:也就是某个mapper的一个Map,但是二级缓存不一定存在内存,而是多种存储介质,还可以是借助ehcache实现分布式存储。第一个sqlseesion查询了数据库之后,mybatis会进行缓存,当第二个sqlseesion 查询的时候首先会在mapper的缓存下,查询,没有再查询数据库。
2.使用
2.1一级缓存
//一级缓存一般不用管理,在你不知不觉下的就会使用了,使用代码,理解一级缓存的效果
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderMapper ordermapper;
//事务管理
@Autowired
private DataSourceTransactionManager txManager;
//事务定义
@Autowired
private DefaultTransactionDefinition txDefinition;
@RequestMapping(value="/findorder",method=RequestMethod.GET)
public String findOrderAndOrderDetail(HttpServletRequest request)
{
//获取事务状态
TransactionStatus status = txManager.getTransaction(txDefinition);
Order order = ordermapper.findOrderAndOrderDetail();
System.out.println(order.toString()+"这是订单一");
Order order2 = ordermapper.findOrderAndOrderDetail();
System.out.println(