美文网首页
Mybatis学习第四弹

Mybatis学习第四弹

作者: hellohuan | 来源:发表于2018-09-19 22:14 被阅读0次

今天主要谈谈 Mybatis 中对查询的结果集封装规则的学习。

通常来说,对于 POJO 我们只需要使用 resultMap 标签对查询的结果集进行封装简单即可,使用 id 子标签封装主键查询结果,使用 result 子标签封装其他列查询结果,使用 result 封装主键,但是不推荐这样做,因为

id 子标签对主键的封装会进行底层优化;其中,使用 column 属性指定查询的列名,使用property 属性指定类的属性名

除此之外,我们通常会遇到一些比较复杂的情况,比如:

1、类的属性是一个 java 对象且查询语句如果采用联合查询,就需要一些特殊的处理才能封装结果集,比如可以指定 result 标签的 property 属性为『a.b』,采用级联属性的方式封装结果集;也可以使用 resultMap 的association 子标签来封装对象属性,其中 property 属性指定属性名,javaType 属性指定对象所属的类的全类名且必须指定。

2、类的属性是一个 java 对象且使用分步查询,此时同样使用 association 标签来定义封装规则,其中 property 属性指定属性名,select 属性指定下一步查询语句所在的命名空间及 id ,column 属性指定将哪一列的值传递给下一步查询语句。

3、类的属性是一个集合类型元素且采用联合查询,此时使用 resultMap 的 collection 子标签定义封装集合类属性的规则,其中 property 属性指定集合属性名,ofType 指定集合类型元素所属类的全类名,然后在 collection 标签中使用 id 和 result 标签正常定义封装规则即可。

4、同上2,也可以采用分步查询并定义相应的封装规则,此时 collection 的property 标签指定集合属性名,select 属性指定集合类型元素所属类的全类名,column 属性指定将某列的值传递给下一查询语句,同时不需要再在collection 标签中在定义封装规则。

5、分步查询时如果需要将多列的值传递到下一个查询语句,可以采用封装 map 的方式,例如 column = “{key1=column1,key2=column2}”。

6、association 标签和 collection 标签中都有 fetchType 属性,可以设定值为 lazy(延迟)和 eager(立即)来开启和关闭延迟加载功能,且该属性会覆盖 Mybatis 的全局设置。

tip:如果需要根据查询得到的某一列的值改变结果集的映射行为,可以使用 discriminator 标签,其中 javaType 必须指定为对应属性的java 类型,column 指定为列名;在子标签 case 中,value 属性指定为需要鉴别的值,resultType 指定为结果集封装的类名;case 标签中定义的封装规则将会与上一级封装规则合并并且取最新的规则。

关注微信公众号:Javall咖啡屋
每天更新各种技术学习心得体会


相关文章

  • Mybatis学习第四弹

    今天主要谈谈 Mybatis 中对查询的结果集封装规则的学习。 通常来说,对于 POJO 我们只需要使用 resu...

  • 第四天:mybatis的缓存和注解开发

    第四天:mybatis的缓存和注解开发 mybatis框架 学习计划 共四天第一天:mybatis入门mybati...

  • Mybatis学习第二弹

    今天主要学习了Mybatis中关系映射文件的编写,其中主要包括增删改查SQL语句的编写。在通过Mybatis进行接...

  • MyBatis学习(转载链接)

    MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 ...

  • Spring系列 | 小荷才露尖尖角

    MyBatis学习笔记 MyBatis操练 MyBatis源码 SpringMVC学习笔记 SpringMVC...

  • MyBatis缓存和注解

    Mybatis缓存和注解 学习目标 1、mybatis缓存 2、mybatis注解 学习内容 1、mybatis缓...

  • Spring框架-学习笔记4

      该学习笔记是《尚学堂spring视频教程》的学习笔记第四部分。 17、Spring整合MyBatis 1、步骤...

  • spring事务管理

    仅供参考 mybatis-spring – MyBatis-Spring | 第四章 事务 《Spring技术内幕...

  • Mybatis 动态SQL编写

    Mybatis学习 mybatis http://www.mybatis.org/mybatis-3/zh/ind...

  • MyBatis

    MyBatis学习总结(一)——MyBatis快速入门 超详细MyBatis入门讲解

网友评论

      本文标题:Mybatis学习第四弹

      本文链接:https://www.haomeiwen.com/subject/ospwnftx.html