? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
最近在鹅厂实习,也是在工作需要什么就去学习什么,本篇博客是实习过程中学习Mybatis的一点总结和记录,目的是为了方便自己以后使用Mybatis。
? 该文件是Mybatis的必备文件,当然也可以采取代码中set的方式,但是不推荐。
? 这些配置都可以在中文文档中找到,这里主要是记录下使用到的配置
? 过程:SqlSessionFactoryBuilder -> SqlSessionFactory -> SqlSession
? 该方法应该编写为一个静态方法,用于不断获取SqlSession连接。获取的连接可以指定是否自动提交
? 同时这里可以看到SqlSessionFactory明显是单例模式,SqlSession是工厂模式。
? 这里就是Mybatis的好处了,可以将数据库查询出来的数据直接匹配到Java普通对象上去。
? 对于POJO类,需要编写属性名、无参构造方法,[有参构造方法],Getter和Setter方法以及toString方法。可以采用lombak插件进行简化代码编写,通过@Data和@NoArgsConstructor和@AllArgsConstructor来自动生成方法,只需要编写属性名即可。
? 这里就是实现POJOMapper中定义的方法,复杂的语句或者结果集映射最好采用.xml方式,简单的语句采用@注解方式即可。
? 在这种方式下能使用Mybatis功能更多,同时也更加灵活
使用复杂结果集映射可以采用两种方式(例子见练习代码mybatis-05):
? 动态SQL的目的是减少在Java代码的SQL语句的逻辑判断拼接和避免重复SQL(重复指的是仅仅只是where或者是set不同)的编写(例子见练习代码mybatis-06)。
? 在这种方式下能使用基本的SQL语句和映射
? 在mybatis-config文件中注册mapper,有三种方式:
一级缓存,会话级缓存,默认开启不可关闭。增删改操作会刷新缓存,除非设置不刷新
二级缓存,Mapper级缓存,会话关闭时一级缓存刷写到二级缓存中,
查询顺序:二级缓存 -> 一级缓存 -> 数据库
原文:https://www.cnblogs.com/ginkgo-/p/14854781.html