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的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...
随机推荐
- php的工作原理
php有一种专门解释php的引擎称之为zend引擎 对于源程序,php引擎全部读入,而后进行词法分析,如果遇到不认识的词,就报parse_error (词法错误后终止分析) 词法分析后进入语法分析:语 ...
- QT:在其他窗口中显示QMainWindow
问题:在QFrame中嵌入QMainWindow窗口,却无法显示QMainWindow窗口,调用QMainWindow的show()却能出现单独弹出一个QMainWindow窗口. 解决: 由于QMa ...
- 批处理(.bat)文件使用笔记
color: 一位参数时→改变字体颜色,例如 color a 就是修改字体为亮绿色. 两位参数时→改变背景和字体颜色,第一位参数为背景颜色值,第二位参数为字体颜色值. color [BF] B:背景颜 ...
- .netcore mongodb 分页+模糊查询+多条件查询
.netcore MongoDB.Driver 版本才2.8 与aspnet差距太大,网上找很多资料没有现成的代码. public override async Task<PagerList&l ...
- .netcore 图片处理
.netcore 图片处理 /// <summary> /// 根据文件类型和文件名返回新路径 /// </summary> /// <param name=" ...
- 多版本python的pip 升级后, pip2 pip3 与python版本失配
mint19.2 本来pip 和 pip2 对应 python2.7 pip3对应python3.6 用源码安装了python3.7之后. 这样 版本也没问题. 但是, 用pip3.7 安装 ...
- 浏览器使用小tip
谷歌浏览器截取长图 很多网页长图单个页面截不下来,那么需要如何解决? 首先,在谷歌浏览器chrome中打开需要截图的网页,等待需要截图的网页打开完毕,然后按F12 打开开发者工具,然后按组合键 Ctr ...
- Express + Mongoose 极简入门
今天尝试使用express + mongoose,构建了一个简单的Hello world,实现以下功能: 定义mongodb使用的Schema,一个User 访问/输出Hello world 访问/i ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...
- Scala学习(四)——模式匹配与函数组合
函数组合 让我们创建两个函数: def f(s: String) = "f(" + s + ")" def g(s: String) = "g(&qu ...