一、MyBatis 基于接口代理方式实现 Dao 层开发
1.1 介绍
采用 Mybatis 的基于接口代理方式实现 持久层 的开发,这种方式是我们后面进入企业的主流。 基于接口代理方式的开发只需要程序员编写 Mapper 接口,Mybatis 框架会为我们动态生成实现类的对象。
1.2 开发规范
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象。
Mapper接口开发需要遵循以下规范:
1、Mapper.xml文件中的namespace与mapper接口的类路径相同。
2、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType类型相同
4、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同


1.3 创建UserMapper接口

1.4 创建UserMapper接口对应的配置文件



1.5 加载UserMapper.xml文件

1.6 测试程序




二、@Param方式解决多参数处理
2.1UserMapper接口文件

注意:每个参数都要映射
2.2UserMapper映射文件

2.3测试程序

三、mybatis-config.xml配置文件
3.1 配置内容
mybatis-config.xml 中配置的内容和顺序如下:
(1). properties(属性)
(2). settings(全局配置参数)
(3). typeAliases(类型别名)
(4). plugins(插件)
(5). environments(环境集合属性对象)
--environment(环境子属性对象)
-----transactionManager(事务管理)
---------dataSource(数据源)
(6). mappers(映射器)
3.2 properties(属性)
作用:
将数据连接单独配置在db.properties中,只需要在mybatis-config.xml中加载db.properties的属性值,在mybatis-config.xml.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties,从而提高了效率。mybatis-config.xml可以引用java属性文件中的配置信息如下:
创建db.properties文件(在resources目录下)

mybatis-config.xml引用如下


3.3 typeAliases(类型别名)
在 mapper.xml 中,定义很多的 statement,statement 需要 parameterType 指定输入参数的类型、需要 resultType 指定输出结果的映射类型。
自定义别名


3.4 mappers(映射器)
Mapper配置的几种方法:
第一种方式: <mapper resource=" " />

第二种方式: <mapper class="" />

注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。

第三种方式: <package name=""/>(重点掌握)
若有多个映射文件使用包扫描比较方便

四、MyBatis映射文件的Sql深入(即动态Sql语句)
4.1 动态sql介绍
4.1.1 动态sql的概念
顾名思义,SQL 是动态拼接成的。 在业务逻辑比较复杂,需要拼接时就要使用动态 SQL。
4.1.2 动态sql主要解决的问题
动态sql主要解决根据条件判断附加动态sql主要解决多条件变化查询,实现自动判断记录字段是否需要更新,根据条件判断附加条sql条件,实现批量添加数据、批量修改数据、批量修删除数据等,优化sql语句,提高执行效率。
4.2 where标签
where标签简介
where标签用于代替sql中的where关键字,可以根据条件判断是否附加where关键字。
如果where标签中有条件成立就会附加where关键字,如果没有成立的条件就不会附加where关键字. 可以自动去掉离他最近一个无关的and 或or关键字.
where标签的书写格式为: <where>添写附加条件</where>
4.2.2 where标签使用
接口编写:

映射文件:

测试程序:

4.3 if标签
if标签简介
if标签表示逻辑条件判断,如果条件成立就附加<if></if>之间的sql语句,如果条件不成立就不附加<if></if>之间的sql语句。
书写格式为:
<if test="表达式">sql语句</if>
4.3.3 if标签使用
接口编写:

映射文件:

注意: 字符串类型的数据需要做不等于空字符串校验。
and 代表的是: &&
or 代表的是:||
测试程序:

4.4 sql片段
4.4.1 sql片段简介
在实际开发中会遇到许多相同的SQL,比如根据某个条件筛选,这个筛选很多地方都能用到,我们可以将其抽取出来成为一个公用的部分,这样修改也方便,一旦出现了错误,只需要改这一处便能处处生效了,此时就用到了<sql>这个标签了。
Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的。


4.5 set标签
4.5.1 set标签简介
set标签用于更新语句中,代替set关键字,可以有效对指定字段进行更新,提升sql的执行效率。当set标签中有条件成立时就会附加set标签,set标签会去除无关的逗号。
set标签中一般嵌套if标签进行使用
4.5.2 set标签使用
接口编写:

映射文件:

测试程序:

4.6 trim标签
4.6.1 trim标签简介
trim标签为万能标签,可用于set或where等(可用来代替set标签或where标签)。
属性:
prefix表示要附加的前缀关键字,
suffix表示要附加的后缀关键字,
prefixOverrides表示要忽略前置字符,
suffixOverrides表示要忽略后置字符。
4.6.2 trim标签使用
4.6.2.1 代替set标签
接口编写:

映射文件:

测试程序:

4.6.2.2 代替where标签
接口编写:

映射文件:

测试程序:

4.7 choose标签
4.7.1 choose标签简介
choose标签作用条件判断来拼接指定的条件,它和if不太相同,choose似类于java中的switch语句用法,只要有条件成立,其它判断将得不到执行,如果所有条件都不成立则执行otherwise标签中的内容。
4.7.2 choose标签使用
接口编写:

映射文件:

测试程序:

4.8 foreach标签
4.8.1 foreach标签简介
foreach标签表示循环,对sql中有重复的部分可以使用此循环来动态拼接sql语句。可以实现批量添加、批量删除、批量更新操作。
4.8.2 数据库连接url的配置
SQL批处理需要在你的数据库连接配置属性后面加上allowMultiQueries=true
“allowMultiQueries=true”的作用:
1.可以在sql语句后携带分号,实现多语句执行。
2.可以执行批处理,同时发出多个SQL语句
2.8.3 foreach标签使用
接口编写:

映射文件:


测试程序:


3452

被折叠的 条评论
为什么被折叠?



