• mybatis学习二


    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 加入需要逆向生成的表
        * 运行主程序
        
    总结:可以借鉴逆向工程生成代码的思想,如果字段过多,可以应用逆向生成的实体类以及增删改查的方法
    其他的方法建议自己扩充编写

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

  • 相关阅读:
    【Linux】freetds安装配置连接MSSQL
    【MySQL】Sysbench性能测试
    【MySQL】mysql buffer pool结构分析
    【MySQL】MySQL锁和隔离级别浅析一
    Spring Boot 1.4测试的改进
    Spring Boot 定时任务的使用
    linux:nohup 不生成 nohup.out的方法
    Spring Boot应用的后台运行配置
    深入理解Session与Cookie(一)
    学习Maven之Cobertura Maven Plugin
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7756641.html
Copyright © 2020-2023  润新知