mybatis多对多级联查询
1.实体
package com.govmade.govdata.modules.sys.pojo; import java.util.List; import javax.persistence.Table;
import javax.persistence.Transient; import com.google.common.collect.Lists;
import com.govmade.govdata.common.persistence.BasePo; @Table(name = "sys_role")
public class Role extends BasePo<Role> {
private static final long serialVersionUID = 1L; private Integer companyId; @Transient
private String companyName; private String name; private String enname; private Integer useable; @Transient
private String menuIds; @Transient
private List<Menu> menuList = Lists.newArrayList(); // 拥有菜单列表 public Role() {
super();
} public Integer getCompanyId() {
return companyId;
} public void setCompanyId(Integer companyId) {
this.companyId = companyId;
} public String getCompanyName() {
return companyName;
} public void setCompanyName(String companyName) {
this.companyName = companyName;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getEnname() {
return enname;
} public void setEnname(String enname) {
this.enname = enname;
} public Integer getUseable() {
return useable;
} public void setUseable(Integer useable) {
this.useable = useable;
} public String getMenuIds() {
return menuIds;
} public void setMenuIds(String menuIds) {
this.menuIds = menuIds;
} public List<Menu> getMenuList() {
return menuList;
} public void setMenuList(List<Menu> menuList) {
this.menuList = menuList;
}
}
2.RoleService定义
/**
* 根据分页查询角色列表
*
* @param page
* @return
*/
public List<Role> findList(Page<Role> page) {
Map<String, Object> params = Maps.newHashMap();
params.put("delFlag", Global.DEL_FLAG_NORMAL);
params.put("orderByClause", "id desc");
page.startPage();
page.setParams(params); List<Role> roleList = roleDao.findList(page);
return roleList;
}
3.RoleDao定义
public List<Role> findList(Page<Role> page);
4.XML定义
<resultMap id="roleResult" type="Role">
<id property="id" column="id" />
<result property="companyId" column="companyId" />
<result property="companyName" column="companyName" />
<result property="name" column="name" />
<result property="enname" column="enname" />
<result property="remarks" column="remarks" />
<result property="useable" column="useable" />
<collection property="menuList" ofType="Menu">
<id property="id" column="menuList.id" />
</collection>
</resultMap> <sql id="roleColumns">
a.id,
a.company_id AS "companyId",
a.name,
a.enname,
a.useable,
a.create_by AS "createBy",
a.create_date AS "createDate",
a.update_by AS "updateBy",
a.update_date AS "updateDate",
a.remarks,
a.del_flag AS "delFlag",
c.name AS "companyName"
</sql> <select id="findList" resultMap="roleResult">
SELECT
<include refid="roleColumns" />,
rm.menu_id AS "menuList.id"
FROM (select * from sys_role order by #{params.orderByClause} limit #{startRow}, #{endRow}) a
LEFT JOIN sys_company c ON c.id = a.company_id
LEFT JOIN sys_role_menu rm ON rm.role_id = a.id
WHERE a.del_flag = #{params.delFlag}
</select>
mybatis多对多级联查询的更多相关文章
- Mybatis中使用级联查询,一对多的查询
一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...
- mybatis多对多关联查询——(十)
1.需求 查询用户及用户购买商品信息. 2 sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetail. ...
- mybatis多对多关联查询
多对多关系 一个学生可以选多门课程,而一门课程可以由多个学生选择,这就是一个典型的多对多关联关系.所谓多对多关系,其实是由两个互反的一对多关系组成.即多对多关系都会通过一个中间表来建立,例如选课表.学 ...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_8 mybatis多对多操作-查询角色获取角色下所属用户信息
一个角色对应多个用户 生成getter和setter 查看两个表的数据 中间表定义了谁有角色,谁没有角色 根据中间表的关系,最终查询出来的列表的数据样子.这需要两个左外链接才能实现功能. 第一个左外链 ...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_9 mybatis多对多操作-查询用户获取用户所包含的角色信息
sql语句以user作为主表 用户的全部信息,以为用户下的角色的.并不是所有的用户都有角色,有角色的就带角色.没角色的就为null 首先修改实体类 定义List<Role> 生成gette ...
- mybatis多对一关联
mybatis多对一关联查询实现 1.定义实体 定义实体的时候需要注意,若是双向关联,就是说双方的属性中都含有对方对象作为域属性出现, 那么在写toString()方法时需要注意,只让某一方输出即可, ...
- mybatis级联查询,多对一查询问题
在使用Mybatis进行多表级联查询时遇到了一个问题:查询结果只有一项,但正确结果是两项.经测试,SQL语句本身没有问题. 在SQL映射文件(XML)中: <!-- 级联查询数据 --> ...
- Mybatis 之级联查询 一对多配置
Mybatis级联 查询相对于hibenate是有点麻烦,但是相应好处也是有的,Mybatis轻量.根据自己要的字段配置方便 一对多配置用 <collection property=&quo ...
- Mybatis 级联查询 (一对多 )
后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...
随机推荐
- JAVA笔记7-Object类之toString方法和equals方法
位于rt.jar\java\lang\Object.class Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个).如果在类声明中未使用extends关键字指明其基类, ...
- vs2017 mvc 自定义路由规则 出现 404.0 错误代码 0x80070002
自定义: WebApiConfig 里面最后增加 config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttp ...
- 对JS继承的研究--------------引用
问:类继承和原型继承不是同一回事儿吗,只是风格选择而已? 答:不是! 类继承和原型继承不论从本质上还是从语法上来说,都是两个截然不同的概念. 二者之间有着区分彼此的本质性特征.要完全看懂本文,你必须牢 ...
- Map循环/迭代/遍历效率、性能问题。
项目开发完毕,为了找点事打发一下时间,于是用findBugs插件对当前完工的项目进行扫描,发现了很多问题.其中有个关于性能的问题,在这里记录一下. 提示信息为:Inefficient use of k ...
- Implement TensorFlow's next_batch for own data
The version of numpy data import numpy as np class Dataset: def __init__(self, data): self._index_in ...
- Thrift支持的基本数据类型
'bool' | 'byte' | 'i8' | 'i16' | 'i32' | 'i64' | 'double' | 'string' | 'binary' | 'slist'(deprecated ...
- shiro所需的依赖
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring< ...
- Java缓存技术有哪些
我们用ehcache在本地,分布式用redis和memcache,各有各的好处,现在企业都是应用很多种中间件供俺们码农选择.
- python3笔记十五:python函数
一:学习内容 函数概述 函数的参数与返回值 参数值传递和引用传递 关键字参数 默认参数 不定长参数 二:函数概述 1.本质:函数就是对功能的封装 2.优点: 简化代码结构,增加了代码的复用度(重复使用 ...
- Running .sh scripts in Git bash
Running .sh scripts in Git bash Let's say you have a script script.sh. To run it (using Git Bash), y ...