改了一条查询语句结果返回的查询结果是重复的

Troyturk 2015-09-11 12:41:52
改的内容:查询条件:private String isAudit;改成private Long[] isAudit;
也就是数组查询,查询条件由单选变成多选
改的数据库查询语句mybaitis:
<!-- 查询条件:是否通过审核 -->
<if test="queryAudit != null and queryAudit.length != 0">
AND A.ISAUDIT IN
<foreach collection="queryAudit" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
改的serviceImpl实现类:
if (!CheckUtils.isEmpty(form.getQueryAudit())) { //验证非空

Long[] queryAudits = form.getQueryAudit();

List<Long> queryAuditList = new ArrayList<Long>();

for (Long queryAudit : queryAudits) {

if (!CheckUtils.isEmpty(queryAudit)) {
queryAuditList.add(queryAudit);
}
}

form.setQueryAudit(queryAuditList.toArray(new Long[0]));
}

返回的页面:
太多就不贴了,反正就是查的每一件商品都要重复6条
...全文
126 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
你的dao的代码呢? 还有你mybatis返回的类型是什么
回复
Defonds 2015-09-11
你把程序执行的查询语句想办法找到,然后贴出来,就知道啥原因了
回复
Troyturk 2015-09-11
问题解决了~
回复
Troyturk 2015-09-11
引用 9 楼 shijing266 的回复:
[quote=引用 7 楼 Troyturk 的回复:] [quote=引用 5 楼 shijing266 的回复:] 你的查询条件不是isAudit 这个么,怎么变成了queryAudit
没有,查询条件是这样命名的,isAudit是返回的结果 另外还有一点百思不得其解的是: 如果在这个http://localhost:8080/goods/query.action?auth.userId=31里面加一个querySellerId或者是querySellerName就不会重复了,但是不加就重复了,这是为什么呢,有没有啥思路啊,问题大约是出在哪一块上了[/quote] 我去,你复制sql到数据库去查,看看结果是什么[/quote] 我觉得是mybatis语句有问题,我再仔细看看好了
回复
Troyturk 2015-09-11
我觉得应该是mybatis语句出了问题,
引用 9 楼 shijing266 的回复:
[quote=引用 7 楼 Troyturk 的回复:] [quote=引用 5 楼 shijing266 的回复:] 你的查询条件不是isAudit 这个么,怎么变成了queryAudit
没有,查询条件是这样命名的,isAudit是返回的结果 另外还有一点百思不得其解的是: 如果在这个http://localhost:8080/goods/query.action?auth.userId=31里面加一个querySellerId或者是querySellerName就不会重复了,但是不加就重复了,这是为什么呢,有没有啥思路啊,问题大约是出在哪一块上了[/quote] 我去,你复制sql到数据库去查,看看结果是什么[/quote] 没问题,结果是正常的,也没有重复
回复
引用 7 楼 Troyturk 的回复:
[quote=引用 5 楼 shijing266 的回复:] 你的查询条件不是isAudit 这个么,怎么变成了queryAudit
没有,查询条件是这样命名的,isAudit是返回的结果 另外还有一点百思不得其解的是: 如果在这个http://localhost:8080/goods/query.action?auth.userId=31里面加一个querySellerId或者是querySellerName就不会重复了,但是不加就重复了,这是为什么呢,有没有啥思路啊,问题大约是出在哪一块上了[/quote] 我去,你复制sql到数据库去查,看看结果是什么
回复
Troyturk 2015-09-11
引用 6 楼 rui888 的回复:
sql  打印出来 调试。 
数据库没问题,打印出来参数也都取到了,就是不知道为什么少了一个参数条件就会重复
回复
Troyturk 2015-09-11
引用 5 楼 shijing266 的回复:
你的查询条件不是isAudit 这个么,怎么变成了queryAudit
没有,查询条件是这样命名的,isAudit是返回的结果 另外还有一点百思不得其解的是: 如果在这个http://localhost:8080/goods/query.action?auth.userId=31里面加一个querySellerId或者是querySellerName就不会重复了,但是不加就重复了,这是为什么呢,有没有啥思路啊,问题大约是出在哪一块上了
回复
兔子托尼啊 2015-09-11
sql  打印出来 调试。 
回复
你的查询条件不是isAudit 这个么,怎么变成了queryAudit
回复
Troyturk 2015-09-11
引用 1 楼 defonds 的回复:
你把程序执行的查询语句想办法找到,然后贴出来,就知道啥原因了
我改的那条查询语句就是这样的: if (!CheckUtils.isEmpty(form.getQueryAudit())) { //验证非空 Long[] queryAudits = form.getQueryAudit(); List<Long> queryAuditList = new ArrayList<Long>(); for (Long queryAudit : queryAudits) { if (!CheckUtils.isEmpty(queryAudit)) { queryAuditList.add(queryAudit); } } form.setQueryAudit(queryAuditList.toArray(new Long[0])); } 我也只改了3个地方,都贴在上面了,不知道为什么查出来的数据会是重复的来着┭┮﹏┭┮
回复
Troyturk 2015-09-11
引用 2 楼 shijing266 的回复:
你的dao的代码呢? 还有你mybatis返回的类型是什么
dao层是用mybatis语句实现的 是这样的: <if test="queryAudit != null and queryAudit.length != 0"> AND A.ISAUDIT IN <foreach collection="queryAudit" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> mybatis返回的是一个实体类型 里面的是private int audit; 这个int也是要改成Long[]的吗
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-09-11 12:41
社区公告
暂无公告