UserAwardMapDao中queryUserAwardMapList执行问题。
来源:15-16 前端展示系统补强之奖品兑换记录列表页的开发

vvshyer
2017-12-18
SQL是不是没有判断Operator_id为空的情况?执行该方法后UserAwardMapList中没有operator_id为NULL的UserAwardMap.
SQL:
<select id="queryUserAwardMapList" resultMap="userAwardResultMap"> SELECT uam.user_award_id, uam.create_time, uam.used_status, uam.point, buyer.user_id, buyer.name, s.shop_id, s.shop_name, a.award_id, a.award_name, operator.user_id AS operator_id, operator.name AS operator_name FROM tb_user_award_map uam, tb_person_info buyer, tb_shop s, tb_award a, tb_person_info operator <where> uam.user_id = buyer.user_id AND uam.shop_id = s.shop_id AND uam.award_id = a.award_id AND uam.operator_id = operator.user_id <!--按顾客信息精确查询--> <if test="userAwardCondition.user!=null and userAwardCondition.user.userId!=null"> and uam.user_id = #{userAwardCondition.user.userId} </if> <!--按某个店铺精确查询--> <if test="userAwardCondition.shop!=null and userAwardCondition.shop.shopId!=null"> and uam.shop_id = #{userAwardCondition.shop.shopId} </if> <!--按顾客名字模糊查询--> <if test="userAwardCondition.user!=null and userAwardCondition.user.name!=null"> and buyer.name like '%${userAwardCondition.user.name}%' </if> <!--按奖品名模糊查询--> <if test="userAwardCondition.award!=null and userAwardCondition.award.awardName!=null"> and a.award_name like '%${userAwardCondition.award.awardName}%' </if> <!--按奖品可用状态查询--> <if test="userAwardCondition.usedStatus!=null"> and uam.used_status = #{userAwardCondition.usedStatus} </if> </where> ORDER BY uam.create_time desc LIMIT #{rowIndex},#{pageSize} </select>
UserAwardMapDaoTest:
数据库中tb_user_award_map:
写回答
2回答
-
翔仔
2017-12-19
目前能想到的就是在一个方法里先取出operatorid 无论有没有值 毕竟咱userawardmap里有这个字段 然后在商家管理系统里再通过id取一次,不过还是同学的方法好:)
00 -
翔仔
2017-12-18
同学好,这应该是bug了,把sql写成了内连接的形式,为了解决这个问题,
同学可以把
uam.user_id = buyer.user_id AND uam.shop_id = s.shop_id AND uam.award_id = a.award_id AND uam.operator_id = operator.user_id
改成
uam.user_id = buyer.user_id AND uam.shop_id = s.shop_id AND uam.award_id = a.award_id AND ( uam.operator_id = operator.user_id OR uam.operator_id is null )
应该就可以解决了。感谢同学的指正,讲的知识点有点多,所以可能会有些bug,也请同学理解海涵:)
0122017-12-20
相似问题