栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis学习笔记

一、MyBatis简介

MyBatis是一个半自动化的持久层框架。

  • MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。
  • MyBatis避免了几乎所有JDBC代码和手动设置参数以及获取结果集。
  • MyBatis可以使用间的的xml或注解用于配置和原始映射,将接口和java的POJO映射成数据库的记录。
二、MyBatis与JDBC、Hibernate

jdbc:

  • sql夹在java代码块中,耦合度高。
  • 维护不易,sql时常变化,需要平凡修改

Hibernate:

  • 长难复杂的sql,Hibernate也不容易处理;
  • 内部会自动生成sql,不容易做优化;
  • 基于全映射的全自动框架,进行部分映射比较困难,导致数据库性能下降。

Mybatis是一个半自动框架,使得sql与java编码分开,一个专注业务,一个专注数据。

三、MyBatis配置文件
  1. 全局配置文件:mybatis-config.xml

    • 指导mybatis正确运行的一些全局设置
    
    
    
    
    
    
    
        
    
    
        
    
            
        
    
    
    
        
    
    
    
    
    
            
    
        
    
    
    
    
    
    
        
            
                
                
                    
                    
                    
                    
                
            
        
    
    
        
    
    
    
    
    
            
    
            
        
    
    

    注:当使用mappers批量注册时,需要将xxxDao.xml与dao接口放在同一个包下,且名字相同。

  2. SQL映射文件:xxxDao.xml

    • 相当于是对Dao接口的一个实现描述。
    
    
    
    
    
        
        select * from t_employee where id = #{id}
      
    
        
            select * from t_employee where empName=#{name} and id=${1}
        
    
        
        select * from student
        
            
                id>#{id}
            
            
               and student_name like #{name}
            
            
                and english < #{english};
            
        
    
    
    forEach标签
        
            select * from student
            
                
                    
                        id=#{id}
                    
                    
                        student_name like #{name}
                    
                    
                        chinese>#{chinese}
                    
                    
                        1=1
                    
                
            
        
    
    set标签
        
            update student
            
                
                    student_name = #{name},
                
                
                    chinese = #{chinese},
                
                
                    math = #{math},
                
                
                    english = #{english}
                
            
            
                id=#{id}
            
        
    
    十一、缓存机制 MyBatis缓存简介

    MaBatis缓存机制:Map,能保存查询出的一些数据。

    • 一级缓存:线程级别的缓存,本地缓存,sqlSession级别的缓存,不同的sqlSession使用不同的一级缓存。
    • 二级缓存:全局范围的缓存,除过当前线程、sqlSession能用外其他也可以调用。

    机制:只要之前查询过数据,mybatis就会保存在一个缓存中(Map),下次获取直接从缓存中拿,但是如果在这之间执行了其它增删改操作,mybatis就会清空一级缓存。

    一级缓存失效的情况
    1. 不同的sqlSession使用不同的一级缓存。
    2. 同一个方法,不同的参数,可能之前没查询过,会重新发sql
    3. 在这个sqlSession期间执行任何一次增删改操作,此sqlSession的一级缓存就会被清空。
    4. 手动清空缓存。
    二级缓存

    二级缓存:全局缓存,namespace级别的缓存。

    sqlSession关闭或提交以后,一级缓存会放在二级缓存中,mybatis默认是没有使用的。

    二级缓存的使用:

    1. 全局配置开启二级缓存

              
      
    2. 配置某个dao.xml文件,让其使用二级缓存

          
      
    3. 让 对应的javaBean实现序列化,即实现Serializable接口。

    缓存的查询数据
    1. 不会出现一级缓存和二级缓存中有同一个数据
      • 一级缓存关闭就会有二级缓存
      • 查一个数据,二级缓存中没有此数据,就会看一级缓存,一级缓存没有就会查数据库,数据库查询后的结果放在一级缓存中。
    2. 任何时候都是先看二级缓存,再看一级缓存,如果都没有,就会去数据库查询。

    缓存有关的设置

    十二、整合第三方缓存

    整合Ehcache

    1. 导包

      ehcache-core-2.6.8.jar
      log4j-1.2.17.jar
      mybatis-3.4.1.jar
      mybatis-ehcache-1.0.3.jar
      mysql-connector-java-8.0.24.jar
      slf4j-api-1.6.1.jar
      slf4j-log4j12-1.6.2.jar

    2. ehcache得有一个配置文件,文件名叫ehcache.xml,放在类路径的根目录下

    3. 在mapper.xml中配置使用自定义缓存

      
      
    4. 如果别的dao还要用这个缓存

      
      
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/274676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号