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的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...
随机推荐
- jQuery attr() prop() data()用法及区别
.attr(),此方法从jq1.0开始一直存在,官方文档写的作用是读/写DOM的attribute值,其实1.6之前有时候是attribute,有时候又是property..prop(),此方法jq1 ...
- Redis常用数据类型底层数据结构分析
Redis是一种键值(key-Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库 Redis中,键的数据类型是字符串,但是为了非富数据存储方式,方便开发者使用,值的数据类型有很多 字符串 ...
- Windows环境下MySQL面试技巧
对话一: 面试官:重新安装mysql卡在最后一步,怎么解决? 应聘者:第一次安装完mysql,由于各种原因需要重新安装是经常遇到的问题,解决方案如下. 1)在注册表里搜索my ...
- 【LOJ2604】「NOIP2012」开车旅行
[题目链接] [点击打开链接] [题目大意] 从西到东的坐标轴\([1,n]\)上有\(n\)个海拔互不相同的城市,每两个城市之间的距离定义为\(dis(i,j)=|h_i-h_j|\) 小\(A\) ...
- EasyPrtSc sec[1.2] 发布!
//HOMETAG #include<bits/stdc++.h> namespace EasilyPrtSc{ //this namespace is for you to be mor ...
- Horizon7.9部署和克隆问题汇总
1 基础环境说明 采用Windows server +SQL Server 2014进行部署,对接现有环境中的AD预控,系统版本为Windows server .桌面虚拟化软件版本采用Horizon ...
- Android_(游戏)打飞机01:前言
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...
- Spark指标项监控
监控配置 spark的监控主要分为Master.Worker.driver.executor监控.Master和Worker的监控在spark集群运行时即可监控,Driver和Excutor的监控需要 ...
- sqlmap自动注入 --REQUEST
--delay=“参数” 每次http(s)请求之间的延迟时间,浮点数,单位为秒,默认无延迟 --timeout=“参数” 请求超时,浮点数,默认为30秒 --retries=“参数” http(s) ...
- MongoDB4和MysSQL5.7的读/写和事务处理速度简单对比
系统环境: Ubuntu 18.04 数据库 MysSQL5.7/MongoDB4.0 插入的数据为随机生产,不重复. MySQL使用的连接库是 sqlalchemyMongoDB使用的连接库是pym ...