通过实际案例充分讲解了MyBatis的各种技术细节和应用场景,对于MyBatis中较难的技术点进行剖析,对于Mybatis源码进行了一定深入探讨。通过学习,能够掌握MyBatis全部的知识内容和各种技巧案例,直击一线开发中的遇到的所有问题,为以后的实战打下了坚实的基础
技术参要
- MyBatis框架基本理解
- MyBatis框架结构
- MyBatis框架搭建
- MyBatis配置文件以及映射文件讲解及编写
- MyBatis获取参数值的方式
- #{}与${}的区别
- MyBatis中各种复杂条件查询功能
- MyBatis批量删除,批量增加,批量更新等
- MyBatis自定义映射
- 关联关系的处理
- MyBatis动态SQL
- MyBatis的动态代理访问
- 入参是map及返回值是map的封装,
- MyBatis缓存机制等
MyBatis框架概述
MyBatis 框架: MyBatis 本是 apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。2013 年 11 月迁移到 Github。 iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAOs) 当前,最新版本是 MyBatis 3.5.7 ,其发布时间是 2021 年 4月 7日。
MyBatis框架解决的主要问题
减轻使用 JDBC 的复杂性,不用编写重复的创建 Connetion , Statement ; 不用编写关闭资源代码。直接使用 java 对象,表示结果数据。让开发者专注 SQ L 的处理。 其他分心的工作由 MyBatis 代劳。
MyBatis 可以完成:
注册数据库的驱动,例如 Class.forName(“com.mysql.jdbc.Driver”))
创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
代码语言:javascript复制List<Student> list = new ArrayLsit<>();
ResultSet rs = state.executeQuery(“select * from student”);
while(rs.next){
Student student = new Student();
student.setName(rs.getString(“name”)); student.setAge(rs.getInt(“age”));
list.add(student);
}
关闭资源
ResultSet.close() , Statement.close() , Conenection.close()
MyBatis框架的结构
1、mybatis配置
SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。