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
相似问题