
这是 SQL:
SELECT m.id,m.nickname,m.phone,m.username,m.create_time, m.update_time,mr.role_desc,mr.role_id, mr.role_name FROM member m LEFT JOIN member_role mr ON m.id = mr.member_id ORDER BY mr.role_name
查询结果:
1 小九九 123456789 admin 2019-04-22 15:08:23 2019-04-22 15:08:31 超级管理员 1 admin
2 测试 1 123456789 test1 2019-05-20 15:08:23 2019-05-20 15:08:23 测试 1 2 test1
1 小九九 123456789 admin 2019-04-22 15:08:23 2019-04-22 15:08:31 测试 1 2 test1
2 测试 1 123456789 test1 2019-05-20 15:08:23 2019-05-20 15:08:23 测试 2 3 test2
查询出来的结果会通过 resultMap 中的 collection 封装,所有最终得到的数据会是 2 条 但是我通过分页去查的话,这会算 4 条数据,而不是 2 条
有什么办法可以得到,我分页查询 4 条数据,而不是出现 2 条数据吗
1 LeeSeoung 2019-05-21 10:20:03 +08:00 = =没细看 可能你需要的是 inner join ? |
2 GeekCourse 2019-05-21 10:22:50 +08:00 这是你代码层面或者说框架层面的问题,框架应该封装有获取总条数的方法 |
3 jackzhan OP 应该用的是 left 吧,因为有可能用户还没有赋予角色 |
5 LeeSeoung 2019-05-21 10:29:24 +08:00 那我对你说的 collection 封装成两条就有疑惑了。。这四条结果是不一样的,你是怎么处理成两条的。 |
7 U7Q5tLAex2FI0o0g 2019-05-21 10:33:24 +08:00 我没搞错的话,你这表设计有点怪怪的。 不是应该 用户表存一个角色表的 id 么?你咋是角色表存用户表的 id ? role: id role_name user: id role_id user_name |
10 zhongyong883 2019-05-21 10:40:34 +08:00 left join 应该就是 member 中有这些数据条目了,可以打印下 member 这张表 |
12 mezi04 2019-05-21 10:45:59 +08:00 1. 在 collection 里用 select 属性指定 SQL,但这样会产生多次查询。 2. 先查主记录,在代码里发第二次查询请求你 left join 那张表的数据,再拼上去。 3. 终极方案:搞定你的产品经理。 |
13 leafre 2019-05-21 10:46:44 +08:00 看不出问题,自己 debug |
18 airfling 2019-05-21 11:29:27 +08:00 一对多的问题,你的 resultMap 的结果集是 reduce 后的,你这样应该是封装对象的,而不是直接用 resultmap,会比较好理解一些 |
19 gawoo 2019-05-21 11:55:27 +08:00 |
20 godgrp 2019-05-21 13:20:00 +08:00 创建新回复过程中遇到一些问题: 请不要在每一个回复中都包括外链,这看起来像是在 spamming |