乐观锁批量更新
<update id="updateBatch" parameterType="java.util.List">
update `order`
<trim prefix="set" suffixOverrides=",">
<trim prefix="order_status = case" suffix=" end,">
<foreach collection="list" item="entity" index="index">
when id = #{entity.id} and version = #{entity.version} then #{entity.orderStatus}
<!--如果不加下面这行,当version != entity.version,就会导致编译成order_status = null,而该列数据库不允许为null,导致数据库执行报错-->
when id = #{entity.id} and version <> #{entity.version} then order_status
</foreach>
</trim>
<trim prefix="extra_info = case" suffix=" end,">
<foreach collection="list" item="entity" index="index">
when id = #{entity.id} and version = #{entity.version} then #{entity.extraInfo, jdbcType=VARCHAR, typeHandler=com.tblh.scoms.util.DbJsonTypeHandler}
when id = #{entity.id} and version <> #{entity.version} then extra_info
</foreach>
</trim>
<trim prefix="version = case" suffix=" end,">
<foreach collection="list" item="entity" index="index">
when id = #{entity.id} and version = #{entity.version} then #{entity.version} + 1
when id = #{entity.id} and version <> #{entity.version} then version
</foreach>
</trim>
</trim>
where
id IN (
<foreach collection="list" separator="," item="entity" index="index">
#{entity.id}
</foreach>
)
</update>
Mysql AND 条件里面写Or条件
SELECT * FROM sku WHERE (is_visible = 1 AND ( (type = 4 OR ( (type = 7 AND rule_code = 'SPLIT_ORDER_1') )) ))
对应的QueryWapper写法
QueryWrapper<SkuDAO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(SkuDAO::getIsVisible, "1")
.and(i->i.eq(SkuDAO::getType, "4").or(j -> j.eq(SkuDAO::getType,"7").eq(SkuDAO::getRuleCode,"SPLIT_ORDER_1")));
List<SkuDAO> detailDAOList = skuMapper.selectList(queryWrapper);