这是 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
littleylv 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 |