mybatis之高级结果映射
先贴一句官方文档内容
如果世界总是这么简单就好了。
正如官方文档所说:如果一切都是这么简单,那该多好啊,但是实际上,我们面对的是复杂的对象,就是对象里有对象,有列表对象,总之五花八门的对象。这个时候我们期盼这mybatis能帮我们来解决这个问题。
今天,我就遇到了这样的一个问题:
在做基于RBAC权限分配模型中,一共有五张表
- sys_permission 记录权限信息,包括权限名称,权限url等
- sys_role 记录角色信息,包括角色名和角色id
- sys_role_permission 记录角色权限对应关系
- sys_user 记录用户表
- sys_user_role 记录用户角色对应关系,一个用户可能有多个角色
好的,我在做角色权限的时候,需要这样的一个场景,根据角色id,获取角色的权限列表,然后展示在前台上:
我的思路是:
1,先有mybatis逆向生成pojo,然后包装心的角色类,里面包含权限列表,我们姑且设置为SysRoleCustome
2,然后在mapper.xml里面新增这样的resultmap,如下所示
<resultMap id="roleCustomeMap" type="com.unisits.zngkpt.common.userprivrman.bojo.SysRoleCustome">
<result property="roleId" column="role_id"></result>
<result property="roleName" column="role_name"></result>
<result property="available" column="available"></result>
<collection property="perList" ofType="com.unisits.zngkpt.common.userprivrman.pojo.SysPermission">
<result property="permissionId" column="permission_id"></result>
<result property="permissionName" column="permission_name"></result>
</collection>
</resultMap>
3,其对应的sql语句为:
<select id="queryAllRoleCustome" resultMap="roleCustomeMap">
select
a.role_id,a.role_name,a.available ,
b.permission_id,
c.permission_name
from sys_role a, sys_role_permission b, sys_permission c
where a.role_id = b.role_id and b.permission_id = c.permission_id
</select>
这样,我们就可以获取包含list<object>这样的对象了
当然,详细的见解还在官方文档里说明,这里只是抛砖引玉,感叹mybatis的便捷性。
mybatis之高级结果映射的更多相关文章
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.2高级结果映射之一对多映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.3.1 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.1高级结果映射之一对一映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.2.4 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- 深入浅出Mybatis系列八-mapper映射文件配置之select、resultMap
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之inse ...
- MyBatis学习--高级映射
简介 前面说过了简单的数据库查询和管理查询,在开发需求中有一些一对一.一对多和多对多的需求开发,如在开发购物车的时候,订单和用户是一对一,用户和订单是一对多,用户和商品是多对多.这些在Hibernat ...
- Mybatis 高级结果映射 ResultMap Association Collection
在阅读本文章时,先说几个mybatis中容易混淆的地方: 1. mybatis中的列不是数据库里的列而是查询里的列,可以是别名(如 select user_name as userName,这时col ...
- Mybatis学习记录(六)----Mybatis的高级映射
1.一对多查询 1.1 需求 查询订单及订单明细的信息. 1.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. SELECT orders. ...
- Mybatis(四) 高级映射,一对一,一对多,多对多映射
天气甚好,怎能不学习? 一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种 ...
- 转:mybatis 高级结果映射(http://blog.csdn.net/ilovejava_2010/article/details/8180521)
高级结果映射 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程 ...
- Mybatis高级结果映射
有时侯,我们用SQL取得的结果需要映射到类似Map<key, Bean>这样的数据结构中或是映射到多个实体类中时,我们就需要使用到resultMap.下面用3个例子说明Mybatis高级结 ...
随机推荐
- Mac Finder 显示路径和复制路径
Mac Finder 显示路径和复制路径 学习了:https://www.jianshu.com/p/757f9ffc5acf 设置 defaults write com.apple.finder _ ...
- ASCII、Unicode、UTF8编码类型的理解
一.ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte) ...
- 算法笔记_162:算法提高 复数归一化(Java)
目录 1 问题描述 2 解决方案 1 问题描述 编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) . ...
- js实现全选,全不选,反选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python/MOOC /翻Wall和互联网编程的那些事
Python MOOC 翻Wall和互联网编程的那些事 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系 ...
- [leetcode]Path Sum--巧用递归
题目: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
- 2 自己编写:AppDelegate,CCApplication,CCApplicationProtocol
1 CCApplicationProtocol.h /* * CCApplicationProtocol.h * * Created on: 2014年10月19日 * Author: t ...
- js重置form表单
CreateTime--2017年7月19日10:37:11Author:Marydon js重置form表单 需要使用的方法:reset() 示例: HTML部分 <form id=&qu ...
- CPU利用率与Load Average的区别?
CPU利用率,是对一个时间段内CPU使用状况的统计,通过这个指标可以看出在某一个时间段内CPU被占用的情况,如果CPU被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器 ...
- Python-Sublime Text3 激活码
1.点击菜单-help-Enter License 2.输入以下内容中的一个 —– BEGIN LICENSE —– Michael Barnes Single User License EA7E- ...