650)this.width=650;"src"/>

mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用相关的知识,希望对你有一定的参考价值。

1、自定义某个 javabean 的封装规则:


技术分享

技术分享


    注:可以看到,select 标签中引用了 定义好的 resultMap 的值。resultMap 标签中的 type 为javabean 类型,id 为唯一标识。id 子标签定义主键(这样定义底层会有优化。)column 属性为字段名,property 属性为字段值。


技术分享

技术分享

    注:可以看到测试结果没有出现问题,说明代码没有错误。


2、自定义某个 javabean 的级联属性封装:


    a、准备工作:mysql 数据库中,在之前 tbl_employees 表的基础上(之前博文的例子),创建一个 tbl_depts 表,并在 tbl_employees 表中添加一个 d_id 字段,并建立与 tbl_depts 表的外键关联。(并在 SQLyog 软件的 sql 脚本编译器中测试 sql 语句)并且在 Employee 类中添加 Department 属性以及对应的 set/get 方法。

    

技术分享


技术分享


技术分享


技术分享

技术分享


    b、在接口中编写方法,传入参数 id。并且在 sql 映射文件中编写 resultMap 和 select 标签。(可以看到,property="dept.id",说明 mybatis 支持级联查询)


技术分享


技术分享


技术分享


    c、使用 resultMap 标签的 association 标签进行定义(需要指定 javabean 类型),也可以得到同样的效果。


技术分享

3、使用 association 进行分步查询功能:


    a、准备工作:添加一个 DepartmentMapper 接口 (接口中定义 getDeptById 方法)和 一个 DepartmentMapper.xml 映射文件。(映射文件中定义 select 标签,与接口方法进行映射)


技术分享


技术分享


    b、在 EmployeeMapperPlus 接口中添加 getEmpByStep 方法,并且在 EmployeeMapper.xml 文件中添加 select 标签。(select 标签中有一个 association 子标签,标签中定义属性 select,以及 column(需要传入的字段))


技术分享


技术分享


    注:分步查询的延迟加载的设置,在全局配置文件中(即 mybatis-config.xml 文件)设置两个属性。(settings 标签中)


技术分享


4、collection 定义关联对象封装规则:


    a、在 Departmnet 类中添加元素为 Employee 的 List 属性,并且在 DepartmentMapper 接口中添加一个 getDeptByIdPlus 方法。 


技术分享


技术分享


    b、下图可以看到,在 DepartmentMapper.xml sql 映射文件中添加 select 标签,标签中的 sql 使用左外连接使 tbl_employees 和 tbl_depts 两张表关联起来。并且在 resultMap 标签中使用 collection 标签来封装集合属性。(ofType 表示集合中的元素类型) 


技术分享


    c、下图所示,测试结果没有问题,显示出预计的结果


技术分享

技术分享


5、使用 collection 标签进行分步查询功能:


    a、在 EmployeeMapperPlus 接口中添加 getEmpByDeptId 方法,并且在 EmployeeMapperPlus.xml sql 映射文件中添加 select 标签取出符合条件的记录。


技术分享


技术分享


    b、在 DepartmentMapper 接口中添加一个 getDeptById 接口,后在 DepartmentMapper.xml sql 映射文件中添加一个 collection 标签,标签中添加 select 属性,与 EmployeeMapperPlus.getEmpByDeptId 相关联,column="id",表示传入参数 id。


技术分享


技术分享


    c、测试输出结果,结果没有问题。


技术分享


    注:使用 column 进行多列的值传递

    多列的值传递可以封装 map 传递 ---> column="{key1=column1, key2=column2},如下图:


技术分享



本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1931980

以上是关于mybatis 中 sql 映射文件 select 标签以及 入 resultMap 标签的应用的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis学习SQL语句映射文件增删改查参数缓存

MyBatis SQL映射文件

MyBatis学习-映射文件标签篇

MyBatis的SQL映射文件

mybatis中xml映射和方法注解两种配置sql语句的方式是不是可以同时存在

MyBatis标签详解(转)