目录
1 MyBatis初识
下面都是官方的解答有些过于的生硬,按我个人理解就是MyBatis框架就是用来代替jabcTmplate的一个巨巨巨好用的持久层框架,其底层封装的东西比较多,所以开发起来就比较快速。MyBatis是一个基于Java的持久层框架,它的内部封装了jdbc使得开发者只需要关注于SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。MyBatis通过xml或者注解的方式将要执行的各种statement配置起来,并通过Java对象和statement中的SQL的动态参数进行映射生成需要执行的SQL语句。最后MyBatis框架执行SQL语句并将结果映射成Java对象并返回,采用ORM(将实体类与数据库表进行映射)思想解决了实体与数据库映射的问题,对jdbc进行封装屏蔽了jdbc底层访问的细节直接完成数据库持久化操作。
1.1 MyBatis的开发步骤
1.2 mapper映射文件:
1.3 核心配置文件
2 MyBatis的dao层(mapper层)实现
2.1 代理开发方式
Mapper代理开发方式只需要编写Mapper接口,由MyBatis框架根据接口中定义的方法通过反射创建出相应的代理对象和接口的实现类方法。要想完成以上开发,需要遵循以下规范:
- 接口的全限名和mapper映射文件中的namespace相同
- 接口中方法名和mapper映射文件中的每个mapper标签的子标签的id相同
- 接口中方法的参数类型和mapper映射文件中的每个mapper标签的子标签的parameterType相同
- 接口中方法的返回值和mapper映射文件中的每个mapper标签的子标签的resultType相同
开发步骤:
2.2 映射文件进阶之动态sql
上面的这种SQL语句写法相当一一个精确匹配,但凡三个参数少任意一个都会造成这么一个问题,就是没有匹配的结果输出。但是一般的业务情况下如果参数少了一个的话就认为这个参数可以是任意值,也就相当于模糊匹配的概念。要想完成这个功能就需要使用动态SQL语句,也就是使用标签进行。
🍕<where>和<if>标签
<if>标签实际上就是对test属性值的条件判断,只有当条件满足了才会将标签内部的语句拼接到上面的select语句中,如果都不满足就会查询所有,有几个条件满足都会拼接到where条件限制,where条件限制不固定就是动态SQL语句的由来。
🍔<foreach>标签
<foreach>标签实际上就是可以拼接SQL语句,有前后的SQL语句成分,有中间的字段值(集合或数组)和分隔符
🌭<sql>片段抽取标签
2.3 核心配置文件进阶
🌮typeHandlers标签
一些情况下我们会有这样的一个业务需求:java中的数据类型与要存放到数据库中的类型不一致,或者数据库中的数据类型和我们需要获取的类型不一致,这时候就需要我们使用自定义的类型处理器了。typeHandlers标签就是用于在核心配置文件中对自定义的类型处理器进行注册使用,于是自定义类型处理器的使用就有两个比较重要的步骤定义处理器类和核心配置文件注册。
🍜plugins标签
MyBatis可以使用第三方的插件进行功能的拓展,plugins标签就是对拓展功能的注册
核心配置文件中的标签配置是遵循以下顺序的,如果顺序改变的话会导致报错,且红框框住的是相比较而言重要的,且前面都讲过
3 MyBatis多表操作
表与表之间有三种对应关系:一对一、一对多、多对多,加下来让我们依次学习一下这三种关系该的表查询如何操作
🥩一对一
一张订单唯一对应着一个用户
🍗多对一
一个用户对应着多张订单
🍖多对多
一个用户扮演多个角色,一个角色被多个用户扮演
学到这MyBatis基本上已经够用了,下面的注解开发只做了解,可以不学,注解开发与xml配置开发的不一样的地方就是,注解开发使用注解将mapper映射文件取而代之,在核心配置文件里mapper映射文件的加载换成包下注解扫描。
4 MyBatis实现注解开发
简单的CRUD注解开发
多表查询的注解开发
一对一
一张订单唯一对应着一个用户
一对多
一个用户对应着多张订单
多对多
一个用户扮演多个角色,一个角色被多个用户扮演
至此,SSM框架的所有知识点都已经到达入门级别了,接下来就是将前面学的所有的知识点或者说框架进行一个整合,形成一个完整的ssm知识体系了。整合完成之后就是进行一个ssm框架项目的实操,让我们一起加油吧🤑🤑