课程简介和目标
学习过JDBC的同学都会有所感受,原生JDBC技术实现对持久层数据操作有着诸多问题.
1 编码繁琐,步骤多
2 手动处理结果集和实体类映射关系比较麻烦,尤其是多表查询
3 没有较好的性能优化手段. 如连接池,缓存,延迟加载等等
4 没有现成的增删改查方法的封装,需要我们自己借助反射和反省等进行封装
5 SQL语句以字符串形式存在于JAVA代码之中, SQL语句和JAVA代码的耦合度太高
6 手动控制事务处理,容易出错
7 操作不同的关系型数据库编码有差异,需要比较细致的修改
... ...
综上所述,JDBC我们认为它仅仅是一种比较基础和原始的技术,在实际开发中我们基本不会直接使用.只能作为我们开发的基础知识来学习,那么实际开发中用什么? 就是比较好的持久层框架. 目前市场上应用最多的,就是MyBatis框架.MyBatis 是一款优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 不足。 体现但不限于如下方面
1 编码简单,步骤少,项目一旦大家完毕,编码非常简单
2 可以使用简单的 XML 或注解来配置和映射原生信息,不必手动处理结果集映射关系
3 配合连接池和缓存技术,再加上延迟加载,性能优异
4 SQL语句以配置文件形式定义,解除了和JAVA代码的耦合
5 事务控制可以手动, 也可以在SSM整合时,交给Spring进行控制
6 操作不同的关系型数据库,JAVA编码基本无需调整
7 轻量级半自动映射数据库框架,系统资源消耗相对低
8 可以与优秀的连接池,spring进行便捷整合
9 后期可以拓展MyBatisPlus,甚至可以在业务层提供了基本CURD的功能封装
10 动态SQL
... ...
简单的说: MyBatis非常优秀,实际开发中一定会应用到的持久层框架技术,必须好好学习
![](https://i-blog.csdnimg.cn/blog_migrate/034f1906ba1d56027c49bf6cb076c2d3.png)
目标:
1 认识持久层框架和ORM,MyBatis项目搭建
2 熟悉MyBatis开发流程和配置文件的编写
3 能够在MyBatis代理模式下开发持久层代码
4 熟练掌握动态SQL和MyBatis多表关联查询
5 掌握MyBatis注解,缓存,延迟加载等相关技术
基于XML和实体映射数据
![](https://i-blog.csdnimg.cn/blog_migrate/572ce8a59534f838ee4491c622722240.png)
MyBatis框架架构
![](https://i-blog.csdnimg.cn/blog_migrate/565beacb4cec86551bb7ba18b2713fe1.png)
MyBatis 代理模式
![](https://i-blog.csdnimg.cn/blog_migrate/2f2ebec60b8121a95c7e922e00921030.png)
课程大纲
第一章 MyBatis初识和项目搭建
认识框架,ORM和MyBatis简介
MyBatis项目创建导入相关依赖
MyBatis执行流程和配置文件开发
第二章 MyBatis配置详解
关于日志的使用
事务相关配置
mapper.xml的加载方式
实体类别名处理
外部属性配置文件存储链接数据库四要素
第三章 了解MyBatis在传统DAO模式下的开开发
SqlSession封装的三个查询方法
SQL参数的传递方式
SqlSession实现CURD的API
第四章 熟练掌握MyBatis代理模式下的开发
Mapper代理模式开发流程
代理模式下参数传递问题
模糊查询和主键自增回填
代理模式下实现所有DML操作
第五章 熟练掌握动态SQL
动态SQL中if和where的使用
动态SQL中choose set 和trim的使用
动态SQL bind sql foreach的使用
第六章 MyBatis多表关联查询
自动和手动处理映射关系
一对一,一对多,多对多映射关系配置
级联查询和SQL语句间调用
立即加载和延迟加载
第七章 缓存和逆向工程
一级缓存
二级缓存
三方缓存
逆向工程
MyBatis执行流程
![](https://i-blog.csdnimg.cn/blog_migrate/1fc79290b4864d52ea213c97cf091243.png)
MyBatis半自动持久层框架
![](https://i-blog.csdnimg.cn/blog_migrate/41e051775e6e2f414b5ec60d0ac85283.png)
SQL与代码分离,SQL由开发人员开发控制
![](https://i-blog.csdnimg.cn/blog_migrate/4a56f7b8e66103f6aec89ab37fd0ade8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/809fa66e76a038cbc9ab9acd5f9b35cc.png)
**基于注解方式的开发 **
![](https://i-blog.csdnimg.cn/blog_migrate/2e0448e7dec384c65580221f26400eb6.png)