当前位置: 首页 > news >正文

mybatis的动态sql中collection与assoction

User.java, Role.java,address.java为三个类

public class User {

.....//user自己的属性
//association一对一
 private Role role;

//collection一对多
private List<Address> addressList;

}

 

//User的接口

//根据roleId获取用户列表assoction
public List<User> getUserListByRoleId(Role role);
//获取指定用户的地址列表collection
public User getAddressListByUserId(User user);

 

//sql

   <!-- 根据roleId获取用户列表association start -->

<resultMap type="User" id="userMap">
<result property="id" column="id"/>
<result property="userCode" column="userCode"/>
<result property="userName" column="userName"/>
<!-- 方法一
<association property="role" javaType="Role">
<result property="id" column="r_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>
</association> -->
<!-- 方法二 -->
<association property="role" javaType="Role" resultMap="roleMap"></association>
</resultMap>
<resultMap type="Role" id="roleMap">
<result property="id" column="r_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>
</resultMap>
<select id="getUserListByRoleId" parameterType="Role" resultMap="userMap">
select u.*,r.id as r_id, r.roleName,r.roleCode from user u,role r
where u.roleId= r.id and r.id=#{id}
</select>
<!-- association end -->
<!-- 获取指定用户的地址列表collection 开始 -->
<resultMap type="User" id="searchMap">
<id property="id" column="userId"/>
<collection property="addressList" ofType="Address">
<!-- 此处id和result都可以 -->
<id property="id" column="a_id"/>
<result property="postCode" column="postCode"/>
<result property="addressContent" column="addressContent"/>
</collection>
</resultMap>
<select id="getAddressListByUserId" parameterType="User" resultMap="searchMap">
select *, a.id as a_id from user u,address a where u.id =a.userId and u.id=#{id}
</select>
<!-- collection end -->

 

为什么采用resultMap
1.resultMap仅用于联合查询并返回一个结果集,但属性名和数据库中的字段名不一致时
3.查询的属性结果集并不是都需要给用户

转载于:https://www.cnblogs.com/person008/p/6433685.html

相关文章:

  • OpenStack学习:通过devstack安装openstacke mitaka
  • Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试
  • 微信小程序把玩(二十九)video组件
  • Linux学习之路(一)命令基本格式
  • php查找字符串中第一个非0的位置截取
  • java学习1-环境搭建
  • XML与JSON的区别?各自有哪些优缺点?
  • android手机rootROM下载地址
  • 顶级程序员的心得
  • 多功能PCIE交换机之十:单NT的恢复
  • c++重载和
  • 为什么文件名要小写?
  • 设计模式之——抽象工厂模式
  • 第八十课、多线程中的信号与槽(下)------------------狄泰软件学院
  • 【css3】浏览器内核及其兼容性
  • ComponentOne 2017 V2版本正式发布
  • Git的一些常用操作
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript实现分页效果
  • Linux各目录及每个目录的详细介绍
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • unity如何实现一个固定宽度的orthagraphic相机
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 容器服务kubernetes弹性伸缩高级用法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • UI设计初学者应该如何入门?
  • ​Spring Boot 分片上传文件
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (5)STL算法之复制
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .apk 成为历史!
  • .net反编译的九款神器
  • .so文件(linux系统)
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [Android 数据通信] android cmwap接入点
  • [Android]通过PhoneLookup读取所有电话号码
  • [GXYCTF2019]BabySQli1
  • [HDU]2161Primes
  • [Hibernate] - Fetching strategies
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • [leetcode]Flatten Binary Tree to Linked List
  • [Oh My C++ Diary]带参数的main()函数
  • [Oh My C++ Diary]头文件使用之math.h与cmath
  • [Python从零到壹] 六十三.图像识别及经典案例篇之图像漫水填充分割应用
  • [Python设计模式] 第27章 正则表达式——解释器模式
  • [Python学习]总结一下Cygwin安装与进阶学习列表
  • [Unity3D ARPG网络游戏编程实践] 网络连接 :unity NetWork与socket的对比(一)