在 mapper 中写 sql 的时候,可以用到的 sql 内置函数:
1. now()
对于 insert , "create_time" 的值改为 "now()","update_time" 的值改为 "now()";
对于 update , "update_time" 的值改为 "now()"。
<update id="checkedOrUncheckedProduct" parameterType="map">
update immall_cart
set checked = #{checked},
update_time = now()
where user_id = #{userId}
<if test="productId != null">
and product_id = #{productId}
</if>
</update>
update 语句,set 多个参数的时候,记得要用 "," 分隔,否则语句错误。
2. IFNULL()
<select id="selectCartProductCount" resultType="int" parameterType="int"> select IFNULL(sum(quantity),0) as count from immall_cart where user_id = #{userId} </select>
如果 sum 为 null,是不可以传给基本类型 int 的;如果更改返回值类型 int 为 Integer 则又会在 service层报错。怎么办呢?
我们当时是不希望发生报错的啊,利用 IFNULL()函数,赋予一个默认值0,当 sum(quantity) 为 null 时,返回默认值。这样就解决了。