mybatis学习

mybatis学习

  •  官网:https://mybatis.org/mybatis-3/zh/configuration.html
  • 什么是mybatis

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

 

  •  持久化
    • 持久层就是将程序的数据在持久层状态和瞬时状态转化的过程
    • 内容:断电即失
    • 数据库(jdbc),io文件持久化

 

  •  持久层
    • 完成持久化工作的代码块
    • 层界限十分明显

 

  •  mybatis作用

     MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

 

  •  使用
    • 建库
    • 建项目
    • 导入依赖

      mybatis学习_第1张图片

 

 

    •  配置mybatis-config.xml

  




  
    
      
      
        
        
        
        
      
    
  
  
    
  

  

 

    •  工具类(也可以不用写,直接配置在mybatis-config.xml里面)

mybatis学习_第2张图片

    • 创建xxxMapper.xml文件,放在Dao的同包,id为dao中的方法名

    • 直接调用dao类

 

 

  •  增删改查

 

//查找

       select id,name,money from account where id = #{id}
    

  

 

 

 

  •  日志
    • log4j

      

# 全局日志配置
log4j.rootLogger=ERROR, stdout
# MyBatis 日志配置
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  

    • stdout_logging

       


  
    
  

  

  •  注解开发

 

@Select("select * from user where id = #{id}")
User findById(@Param("id") long id);

@Select("select * from user where name = #{name}")
User findByName(@Param("name") String name);

@Select("select * from user where email = #{email}")
User findByEmail(@Param("email") String email)

  

  •  执行流程(参考:https://blog.csdn.net/qq_38270106/article/details/93398694)

     mybatis学习_第3张图片

 

 

 

 

  •  多对一

 


  
  
  



  
  
  
  
  

  

 

 

  •  一对多

 


  





  

 

  •  动态SQL

     定义:动态SQL就是指根据不同的条件生成不同的SQL语句

if

      这条语句提供了可选的查找文本功能。如果不传入 “title”,那么所有处于 “ACTIVE” 状态的 BLOG 都会返回;如果传入了 “title” 参数,那么就会对 “title” 一列进行模糊查找并返回对应的 BLOG 结果(细心的读者可能会发现,“title” 的参数值需要包含查找掩码或通配符字符)。


  

choose (when, otherwise)

trim (where, set)

foreach

 

SQL片段:把重复的SQL代码提取出来,重复使用

mybatis学习_第4张图片

 

 

  •  缓存

     MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。默认情况下,只启用了本地的会话缓存(一级缓存),它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:

 

     二级缓存是事务性的。这意味着,当 SqlSession 完成并提交时,或是完成并回滚,但没有执行 flushCache=true 的 insert/delete/update 语句时,缓存会获得更新。

 

  •  自定义缓存

 

 看官方文档很重要

 

   //注解

@Select("select * from user where id = #{id}")

User findById(@Param("id")long id);

@Select("select * from user where name = #{name}")

User findByName(@Param("name")String name);

@Select("select * from user where email = #{email}")

User findByEmail(@Param("email")String email)




你可能感兴趣的:(mybatis学习)