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多对多级联查询的更多相关文章

  1. Mybatis中使用级联查询,一对多的查询

    一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...

  2. mybatis多对多关联查询——(十)

    1.需求 查询用户及用户购买商品信息. 2     sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetail. ...

  3. mybatis多对多关联查询

    多对多关系 一个学生可以选多门课程,而一门课程可以由多个学生选择,这就是一个典型的多对多关联关系.所谓多对多关系,其实是由两个互反的一对多关系组成.即多对多关系都会通过一个中间表来建立,例如选课表.学 ...

  4. 阶段3 1.Mybatis_09.Mybatis的多表操作_8 mybatis多对多操作-查询角色获取角色下所属用户信息

    一个角色对应多个用户 生成getter和setter 查看两个表的数据 中间表定义了谁有角色,谁没有角色 根据中间表的关系,最终查询出来的列表的数据样子.这需要两个左外链接才能实现功能. 第一个左外链 ...

  5. 阶段3 1.Mybatis_09.Mybatis的多表操作_9 mybatis多对多操作-查询用户获取用户所包含的角色信息

    sql语句以user作为主表 用户的全部信息,以为用户下的角色的.并不是所有的用户都有角色,有角色的就带角色.没角色的就为null 首先修改实体类 定义List<Role> 生成gette ...

  6. mybatis多对一关联

    mybatis多对一关联查询实现 1.定义实体 定义实体的时候需要注意,若是双向关联,就是说双方的属性中都含有对方对象作为域属性出现, 那么在写toString()方法时需要注意,只让某一方输出即可, ...

  7. mybatis级联查询,多对一查询问题

    在使用Mybatis进行多表级联查询时遇到了一个问题:查询结果只有一项,但正确结果是两项.经测试,SQL语句本身没有问题. 在SQL映射文件(XML)中: <!-- 级联查询数据 --> ...

  8. Mybatis 之级联查询 一对多配置

    Mybatis级联 查询相对于hibenate是有点麻烦,但是相应好处也是有的,Mybatis轻量.根据自己要的字段配置方便 一对多配置用   <collection property=&quo ...

  9. Mybatis 级联查询 (一对多 )

    后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...

随机推荐

  1. 2019年11月18日 JAVA期中考试 增删改查

    一.题目 石家庄铁道大学 青年志愿者服务网(20分)   1.项目需求: 为了适应社会主义市场经济发展的需要,推动青年志愿服务体系和多层次社会保障体系的建立和完善,促进青年健康成长,石家庄铁道大学急需 ...

  2. react 中的路由 Link 和Route和NavLink

    route是配置,link是使用 https://blog.csdn.net/chern1992/article/details/77186118(copy) 嵌套路由一般使用Route,类似于vue ...

  3. java文件断点续传上传下载解决方案

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  4. asp.net 怎么上传文件夹啊,不传压缩包!

    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...

  5. 51 Nod 数字1的数量

    1009 数字1的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的 ...

  6. poj 3685 Matrix 二分套二分 经典题型

    Matrix Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 5724   Accepted: 1606 Descriptio ...

  7. Kaggle 网站上的练习

    快速的数据科学教程: https://www.kaggle.com/learn/overview

  8. Linux上Redis安装和简单操作

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  9. Idea如何生成JPA的相关model,以及运行JPA项目的时候启动错误

    1.如何生成JPAmodel 按照顺序执行下面的步骤 为指定的项目添加JPA的配置,这样之后生成的model就会在指定的项目内 选择JPA之后默认不用操作直接添加 没有Persistence的可以在w ...

  10. JS基础_Null和Undefind

    1.Null Null类型的值只有一个值,就是null null专门用来表示一个为空的对象 var a=null; console.log(a);//nulltypeof a //object 2.U ...