Mybatis 进阶
Mybatis 映射配置文件 - 动态sql
-
标签 : 如果有动态条件,则使用该标签代替where关键字
-
标签 : 条件判断标签
<if test=“条件判断”> 查询条件拼接 </if>
-
标签 : 循环遍历标签
<foreach collection=“”open=“”close=“”item=“”separator=“”> 获取参数 </foreach> 属性 : collection 集合或者数组 open 开始的sql 语句 close 结束的sql 语句 item 参数变量名 separator 分隔符(,)
-
sql 片段 抽取
-
标签 抽取sql语句标签
<sql id=“片段唯一标识”>抽取的 SQL 语句</sql>
-
标签 引入sql 片段标签
<include refid=“片段唯一标识”/>
-
-
小结
- 动态 SQL 指的就是 SQL 语句可以根据条件或者参数的不同进行动态的变化。
- :条件标签。
- :条件判断的标签。
- :循环遍历的标签。
- :抽取 SQL 片段的标签。
- :引入 SQL 片段的标签。
分页查询
-
PageHelper:第三方分页助手
-
使用步骤
- 导入 jar 包。
- 在核心配置文件中集成分页助手插件
- 在测试类中使用分页助手相关 API 实现分页功能。
-
pageinfo: 封装分也分页相关参数的功能类
-
核心方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7IIjWYoo-1592724258435)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200619214814234.png)]
多表操作
-
核心配置文件属性
// 引入映射配置文件 <mappers> <package name="mapper"/> // package标签 引入映射配置文件, name属性 表示映射的dao层接口所在包名(在解析时能搜索到被配置的接口) </mappers>
-
映射配置文件
-
一对一
<resultMap id="select标签中resultMap的属性值" type="接口方法中泛型类型"> <id column="表中主键字段名" property= "实体类中定义的id名" > <result column= "表中字段名" property= "实体类中变量名"> //一个实体类中指向的是一个具体的类,就需要用association标签给该实体类赋值 <association property= "被包含变量的变量名" javatype="该对象的数据类型" > <id/> <result/> </association> </resultMap> <select id = "接口中的方法名" resultMap="自己定义的返回值名" > sql 语句 </select>
-
一对多 多对多
<resultMap id="select标签中resultMap的属性值" type="接口方法中泛型类型"> <id column="表中主键字段名" property= "实体类中定义的id名" > <result column= "表中字段名" property= "实体类中变量名"> //一个实体类中指向的是一个集合,就需要用collocation标签给该集合赋值 <collocation peoperty= "该集合的变量名" oftype="该集合的泛型类型"> <id/> <result/> </collocation> </resultMap> <select id = "接口中的方法名" resultMap="自己定义的返回值名" > sql 语句 </select>
-
小结
- 多表模型分类:一对一、一对多、多对多。
- 配置字段和对象属性的映射关系标签。 id 属性:唯一标识 type 属性:实体对象类型
- 配置主键映射关系标签。
- 配置非主键映射关系标签。 column 属性:表中字段名称 property 属性: 实体对象变量名称
- 配置被包含对象的映射关系标签。 property 属性:被包含对象的变量名 javaType 属性:被包含对象的数据类型
- 配置被包含集合对象的映射关系标签。 property 属性:被包含集合对象的变量名 ofType 属性:集合中保存的对象数据类型
-
erty 属性:被包含对象的变量名 javaType 属性:被包含对象的数据类型
* 配置被包含集合对象的映射关系标签。 property 属性:被包含集合对象的变量名 ofType 属性:集合中保存的对象数据类型