您现在的位置是:首页 > 个人日记个人日记

mybatis-09-缓存

2019-02-03 18:20:00【个人日记】60人已围观

简介查询的数据放入内存中,查询更快

缓存

一级缓存

此缓存只是在当前会话(SqlSession)有用

当数据只读取而不改变,则缓存不会消失

如果数据改变,例如使用commit,则当前会话将缓存全部被清除

二级缓存 *

此缓存在当前命名空间(namespace)有用

一级缓存默认开启,二级缓存需要在全局文件中配置

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration
  6. <!-- 开启二级缓存 -->
  7. <settings>
  8. <setting name="cacheEnabled" value="true"/>
  9. </settings>
  10. <environments default="development">
  11. <environment id="development">
  12. <!-- 使用JDBC技术 -->
  13. <transactionManager type="JDBC"/>
  14. <!-- 数据库连接池,mybatis连接池 -->
  15. <dataSource type="POOLED">
  16. <property name="driver" value="com.mysql.jdbc.Driver"/>
  17. <property name="url" value="jdbc:mysql://localhost:3306/order?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true"/>
  18. <property name="username" value="root"/>
  19. <property name="password" value="1538933906"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <!-- 配置映射文件 -->
  24. <mappers>
  25. <mapper resource="orderMapper.xml"/>
  26. <mapper resource="userMapper.xml"/>
  27. </mappers>
  28. </configuration>
  1. <settings>
  2. <setting name="cacheEnabled" value="true"/>
  3. </settings>

以上配置需要在全局文件中配置

配置时应该注意顺序,mapper配置应该在最后,设置settings放在开头,数据库environments放在中间

但是缓存需要在磁盘或内存中储存对象信息,所以需要缓存的对象需要实现序列化

User对象应该实现序列化

  1. package com.huangxin.order.model;
  2. import java.io.Serializable;
  3. import java.util.List;
  4. //实现序列化接口
  5. public class User implements Serializable {
  6. private Integer id;
  7. private String userName;
  8. private String userTelephone;
  9. private String userSex;
  10. private List<Orders> orders;
  11. @Override
  12. public String toString() {
  13. return "User{" +
  14. "id=" + id +
  15. ", userName='" + userName + '\'' +
  16. ", userTelephone='" + userTelephone + '\'' +
  17. ", userSex='" + userSex + '\'' +
  18. ", orders=" + orders +
  19. '}';
  20. }
  21. public List<Orders> getOrders() {
  22. return orders;
  23. }
  24. public void setOrders(List<Orders> orders) {
  25. this.orders = orders;
  26. }
  27. public Integer getId() {
  28. return id;
  29. }
  30. public void setId(Integer id) {
  31. this.id = id;
  32. }
  33. public String getUserName() {
  34. return userName;
  35. }
  36. public void setUserName(String userName) {
  37. this.userName = userName;
  38. }
  39. public String getUserTelephone() {
  40. return userTelephone;
  41. }
  42. public void setUserTelephone(String userTelephone) {
  43. this.userTelephone = userTelephone;
  44. }
  45. public String getUserSex() {
  46. return userSex;
  47. }
  48. public void setUserSex(String userSex) {
  49. this.userSex = userSex;
  50. }
  51. }

User implements Serializable

这样才可以在缓存中写入对象信息

当数据库中执行增删改时,缓存则被清空

当单独调整某个标签缓存,在便签中使用 userCache=false或者true

这个属性可用于查询的所有标签

当使用增删改操作时可以在标签中加入flushCache,当增删改则刷新缓存

Tags: JavaWeb  

评论区

    2019-07-20 07:49:37

    站长

    欢迎各位评论!

    2019-07-13 14:46:59

    失误失误

    得的爽歪歪无无无无无无无无无无无无无无无无无无无


文章评论



给自个选个头像吧!






站点信息

  • 建站时间:   2019-01-31
  • 网站程序:   Tomcat+nginx
  • 文章统计:   44篇文章
  • 标签管理:   标签云
  • 微信公众号:  扫描二维码,联系我