Mybatis缓存

1:缓存的概念
    当用户频繁查询某些固定 的数据时,第一次将这些数据从数据库查询出来,保存在缓存中(内存,高速磁盘)中
    当下次用户再次查询这些数据时,不用再通过数据库查询,而是去缓存里面查询,减少网络连接和数据库查询带来的损耗
    从而提高我们的查询效率,减少高并发访问带来的系统性能问题
    
2:Mybatis的缓存分为一级缓存和二级缓存
    Mybatis的一级缓存是指在同一个sqlSession里面应用.
    Mybatis的二级缓存可以跨越sqlSession,以mapper为单位创建,是系统级缓存.
    Map<key,value>

3:一级缓存
    当第一次发出sql请求的时候,Mybatis从数据库查询,并将结果存入一级缓存
    当在同一个sqlSession里面发出同样的sql查询请求,Mytatis会直接从缓存中查找
    如果没有,则从数据库中查找
    注意:
        a:Mybatis默认支持一级缓存,不需要另外的配置,但是在跟spring整合的时候,进行mapper代理开发
        的方式时,mybatis的一级缓存是不存在的,因为代理模板每次调用完都会个关闭sqlSession
        b:如果sqlSessioon里面出现commit操作,sqlSession中的缓存会被全部清空,避免出现脏读
        c:一级缓存的存在形式(map)的数据结构
            key:statementId+rowBounds+sql+sql参数
            value:数据
            
4:二级缓存
    * 如图所示:
        a:Mybatis的二级缓存是mapper级别的,就是活二级缓存是以mapper配置文件的namespace为单位创建的
        b:Mybatis的二级缓存需要在setting里面加入配置(默认是开启的)
            <setting name = "cacheEnabled" value="true"/>
        c:需要在mapper的映射文件中加入<cache/>标签才可以触发此映射文件开启二级缓存
        d:在映射文件用到的查询对象必须序列化(实体类)
        e:如果需要禁用某个statement的缓存,可以在这个statement里面单独设置 useCache="false"
    * 二级缓存的相关配置
       Mybatis与Spring的整合

1:引入spring和mybatis各自的jar包

2:引入spring与mybatis整合的包
    mybatis-spring-1.2.4.jar
    
3:当有jar包冲突的时候,保留高版本的jar包

4:在spring的配置文件applicationContext.xml中
    * 配置管理sqlSessionFactory
    * 配置管理数据源
    * 配置管理mapper对象
    
5:两种开发方式:
    * 传统的接口和实现方式
    * 基于mapper动态代理的方式

1:Mybatis的逆向工程
    为了提高开发效率,Mybatis官方提供了一个逆向工程的组件,来根据数据库中的某个表生成对应
    的实体类,mapper.xml,mapper.java
    
2:怎么做
    * 需要一个jar包,一个逆向工程的配置文件,一小段java代码
    * 新建一个java工程
    * 更改逆向工程的配置文件
        a 数据库信息
        b mapper接口的文件位置
        c mapper映射 的文件位置
        b 加入需要逆向生成的表
    * 运行主程序
    
总结:可以借鉴逆向工程生成代码的思想,如果字段过多,可以应用逆向生成的实体类以及增删改查的方法
其他的方法建议自己扩充编写

注意:要新建工程进行逆向工程,不要在开发的项目生成,会覆盖原来的工程

mybatis学习二的更多相关文章

  1. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  2. MyBatis学习(二)---数据表之间关联

    想要了解MyBatis基础的朋友可以通过传送门: MyBatis学习(一)---配置文件,Mapper接口和动态SQL http://www.cnblogs.com/ghq120/p/8322302. ...

  3. MyBatis学习(二)

    前言 昨天的博客简单的记录了MyBatis的起源.作用.配置以及一个简单的查询例子.写到一半的时候,觉得已经学会了MyBatis,可是全写完的时候才发现,如果多个参数查询,如何表的名字与类字段名不一样 ...

  4. MyBatis学习(二):与Spring整合(非注解方式配置MyBatis)

    搭建SpringMVC的-->传送门<-- 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话,pom.xml的配置如下: <?xml version=" ...

  5. mybatis学习二 全局配置文件常用配置

    全局配置文件的详细解析可以参考mybatis的中文参考文档 1.全局配置文件中内容1.1 <transactionManager/> type 属性可取值1.1.1 JDBC,事务管理使用 ...

  6. mybatis 学习二 MyBatis简介与配置MyBatis+Spring+MySql

    1.2.2建立MySql数据库 在C:\Program Files\MySQL\MySQL Server 5.7\bin下面: 首先连接MySQL:        mysql  -u root -p ...

  7. mybatis 学习二 conf xml 配置信息

    xml映射配置文件      这个xml文件主要包括一下节点信息      * properties 属性      * settings 设置      * typeAliases 类型命名     ...

  8. MyBatis 学习二之简单练习巩固

    1.新建一个maven项目并在pom.xml中添加依赖 2.项目架构   配置文件:SqlMapConfig.xml <?xml version="1.0" encoding ...

  9. java mybatis学习二

    <select id="find1" parameterType="java.util.HashMap" resultType="com.xxx ...

随机推荐

  1. 深入理解Java对象的创建过程:类的初始化与实例化

    摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...

  2. 使用Java理解逻辑程序

    1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本 ...

  3. Struct_2路径问题

    今天在自学那个Struct2的知识点的时候,发现那个相对路径和绝对路径有点遗忘.特地去看了视频还有在百度上查了一些资料.我觉得这个路径问题对于我这个初学者来说还是有点容易遗忘的.所以,今天就添加这个新 ...

  4. JQuery :contains选择器,可做搜索功能,搜索包含关键字的dom

    假设有一个加油站列表,找到所有包含某某关键字的加油站. 选择所有包含 "is" 的 <p> 元素: $("p:contains(is)") 搜索功能 ...

  5. centos 7.0远程登录

    http://blog.csdn.net/e1219092641/article/details/79586476 linux在虚拟机上操作也是有许多不便之处的,但是远程登录的使用可以使操作简单不少, ...

  6. ssh框架-Struts2(一)

    Struts2 概述 用我们自己的话来说: struts是web层框架, 相当于Servlet 作用: 1. 获得请求参数 2. 调用业务 3. 分发转向 常用的WEB层框架 Struts2入门 1. ...

  7. 安装/或更新node和npm

    1.安装/或更新node和npm     安装node: node 的官网 nodejs.org 去下载 msi 安装包     更新npm: 使用命令  npm install npm@latest ...

  8. C博客作业--指针

    一.PTA实验作业 题目1:输出月份英文名 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 选择这一题是因为这道题的通过率较低.为什么会这样 ...

  9. 201621123050 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 答 ...

  10. Alpha冲刺第十一天

    Alpha冲刺第十一天 站立式会议 项目进展 项目进入尾声,主要测设工作完成过半,项目总结也开始进行. 问题困难 项目的困难现阶段主要是测试过程中存在一些"盲点"很难发现或者发现后 ...