问题描述
- 请问为什么我的mybatis 关联查询只有一条记录,但是日志打印出来的Total: 3, 谢谢
-
SELECT * FROM JiKeUser;
这个里面有如下三条记录,id userName password ------ --------- ---------- 2 jike00100 666666 3 jike00200 888888 8 author001 123456
SELECT * FROM author;
这个里面也是三条记录,id realName userID IDCard ------ ------------ ------ -------- 1 一个大牛 8 (NULL) 2 bbb 2 (NULL) 3 aaaaaa 3 (NULL)
这样关联查询自然也是三条,
SELECT * FROM author INNER JOIN jikeUser ON jikeuser.id=author.userID ;
在java中的映射也就是author对象中有个引用指向jikeuser,
public class Author { private Integer id; //自增主键 private JiKeUser jikeUser; //外键引用JiKeUser表 private String realName;//真实姓名 private String IDCard;//身份证
可是我用如下方法查询却只查询出来一个记录,
这是配置文件<resultMap id="JiKeAuthorMap" type="Author"> <id property="id" column="author.id" /> <result property="realName" column="realName" /> <result property="IDCard" column="IDCard" /> <association property="jikeUser" column="userID" javaType="JiKeUser"> <id property="id" column="jikeUser.id" /> <result property="userName" column="userName" /> <result property="password" column="password" /> </association> </resultMap> <select id="selectAuthorJoin" resultMap="JiKeAuthorMap"> select * from author inner join jikeUser on jikeuser.id=author.userID </select>
下面是java代码
List<Author> ap=session.selectList("selectAuthorJoin");//联合查询 System.out.println(ap.size()); //1
但是如下的日志里面的total倒是对的,是3,
2016-04-30 05:33:43,781 [main] DEBUG [/.selectAuthorJoin] - ==> Preparing: select * from author inner join jikeUser on jikeuser.id=author.userID 2016-04-30 05:33:43,806 [main] DEBUG [/.selectAuthorJoin] - ==> Parameters: 2016-04-30 05:33:43,819 [main] DEBUG [/.selectAuthorJoin] - <== Total: 3
可就是查询出来的list的size就是1个啊,郁闷
解决方案
不要select*,把别名加上试试
解决方案二:
select * from author join jikeUser
on jikeuser.id=author.userID, 要修改要什么别名啊,谢谢
解决方案三:
首先呢你的数据库查询出来是3条而且程序也没有报错,
因此你的别名什么的是ok的
既然java中取出的是一条那么就是说明这个xml中的map有问题了。
第一行有这个jikeUser但是后面的没有
你不妨把列名加上和这个resultmap中的东西对应起来
解决方案四:
你可以看看我的博客:http://blog.csdn.net/u014427391/article/details/51287036
时间: 2024-10-17 10:25:49