mybatis---实现关联表查询
推荐学习博客:
1、http://www.cnblogs.com/xdp-gacl/p/4264440.html
2、http://www.cnblogs.com/yaobolove/p/5444046.html
以前觉得hibernate的formula属性配置特别方便,作用就是说白了就是用一个查询语句动态的生成一个类的属性,数据库表又不存在这个属性,例子如下:
<hibernate-mapping>
<class name="com.bsit.device.hibernate.pojo.User_info" table="user_info" >
<id name="userid" type="java.lang.String">
<column name="USERID" ><comment>用户id</comment></column>
<generator class="assigned"/>
</id> <property name="account" type="java.lang.String">
<column name="ACCOUNT" ><comment>用户账号</comment></column>
</property> <property name="username" type="java.lang.String">
<column name="USERNAME" ><comment>用户名称</comment></column>
</property> <property name="password" type="java.lang.String">
<column name="PASSWORD" ><comment>密码</comment></column>
</property> <property name="org_id" type="java.lang.String">
<column name="org_id" ><comment>用户所属的组织机构id</comment></column>
</property> <property name="org_name" type="java.lang.String" formula="(select o.orgname from org o where o.orgid=org_id )" /> </class>
</hibernate-mapping>
但本人不太喜欢hibernate,还是感觉直接sql来的爽,所以mybatis成了最爱,但此功能在mybatis中是怎样实现的呢?
<mapper namespace="com.bsit.system.mapper.Sys_userMapper" > <resultMap id="resultMap" type="com.bsit.system.model.Sys_user" >
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="account" column="account"/>
<result property="password" column="password"/>
<result property="role_id" column="role_id"/>
<association property="role_name" column="role_id" select="getRoleNameByRoleId"/>
</resultMap> <!-- 根据id获取对象 -->
<select id="getRoleNameByRoleId" parameterType="String" resultType="String">
select t.r_role_name from sys_role t where t.id = #{id}
</select> <!-- 根据id获取对象 -->
<select id="getSys_userById" parameterType="String" resultMap="resultMap">
select t.* from sys_user t where t.id = #{id}
</select> </mapper>
service调用getSys_userById,返回值再根据关联association调用getRoleNameByRoleId,getRoleNameByRoleId方法中的参数就是association标签中column的值,
如果有多个参数,则可写成:
<association property="role_name" column="{acc=account,pas=password}" select="getRoleNameByRoleId"/>
<!-- 根据id获取对象 -->
<select id="getRoleNameByRoleId" parameterType="java.util.Map" resultMap="resultMap">
select t.* from sys_user t where t.account = #{acc} and t.password = #{pas}
</select>
关联查询传入多值,column当map使用,是键值对形式。在具体查询语句中,直接使用其键就可以取到其值。column中如果有多个参数时,则对应的select标签的parameterType就必须是java.util.Map,或java.util.HashMap。
如果想要在对象中关联属性,则可参考推荐博客。
mybatis---实现关联表查询的更多相关文章
- MyBatis实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- MyBatis——实现关联表查询
原文:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创 ...
- Mybatis系列(三):Mybatis实现关联表查询
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...
- MyBatis—实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- mybatis一对一关联表查询
先创建一个表 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name ) ); CREATE TABLE class( c_ ...
- Mybatis源码分析--关联表查询及延迟加载原理(二)
在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- .NetCore中EFCore的使用整理(二)-关联表查询
EF常用处理关联加载的方式有3中:延迟加载(Lazy Loading).贪婪加载 (Eager Loading)以及显示加载. 一.EF Core 1.1 1.当前的版本,还不支持延迟加载(Lazy ...
- SpringBoot Data JPA 关联表查询的方法
SpringBoot Data JPA实现 一对多.多对一关联表查询 开发环境 IDEA 2017.1 Java1.8 SpringBoot 2.0 MySQL 5.X 功能需求 通过关联关系查询商店 ...
- 使用Mybatis进行连表查询、left join---https://blog.csdn.net/jinzhencs/article/details/51980518
使用Mybatis进行连表查询.left join https://blog.csdn.net/jinzhencs/article/details/51980518
随机推荐
- Delphi多线程编程--线程同步的方法(事件、互斥、信号、计时器)简介
更详细的可以参考:http://www.cnblogs.com/xumenger/p/4450659.html 或者参考之后的博客 四个系统内核对象(事件.互斥.信号.计时器)都是线程同步的手段,从这 ...
- Python安装包或模块的多种方式汇总
windows下安装python第三方包.模块汇总如下(部分方式同样适用于其他平台): 1. windows下最常见的*.exe,*msi文件,直接运行安装即可: 2. 安装easy_install, ...
- ASP.NET4.5Web API及非同步程序开发系列(2)
认识ASP.NET WEB API 他的前身为WCF WEB API用于协助WCF支持RestFul.现在集成进ASP.NET,正式更名为ASP.NET WEB API,ASP.NET Web API ...
- CozyRSS开发记录3-标题栏再加强
CozyRSS开发记录3-标题栏再加强 1.更精炼的标题栏 接下来,我们把窗口的边框和默认的标题栏给去掉,让Cozy看起来更像一个平板应用. 在主窗口的属性里,修改下列两个属性: 效果一目了然: 2. ...
- java导出word(带图片)
public class CreateWordDemo { public void createDocContext(String file) throws DocumentException,IOE ...
- 数据类型和Json格式
1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml. 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开. 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一 ...
- BZOJ 3157 &数学乱搞...
挖一发坑...一碰到数学题头晕眼花...看着证明感觉我幼儿园还没毕业... http://www.cnblogs.com/zhuohan123/p/3726933.html 等我会完完整整地写一发la ...
- Python for Infomatics 第12章 网络编程二(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.3 用HTTP协议获取一张 ...
- SqlBluckCopy 保存大数据
DataTable dt = new DataTable(); dt.Columns.Add("UserName", typeof(string)); dt.Columns.Add ...
- 通用数据库操作类,前端easyui-datagrid,form
实现功能: 左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...