本文主要是介绍自定义sql语句,但复杂的where部分由条件构造器wrapper来完成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。
步骤:
实现:
@Testvoid testCustomSqlUpdate(){//update tb_user set balance = balance - #{amount} where id in(?,?,?,?,...)List<Long> ids = Arrays.asList(1L, 2L, 3L, 4L);QueryWrapper<User> wrapper = new QueryWrapper<User>().in("id",ids);int amount = 200;userMapper.updateBalanceByIds(wrapper,amount);}
@Mapper
public interface UserMapper extends BaseMapper<User> {//自定义sql,同时拼接where条件void updateBalanceByIds(@Param(Constants.WRAPPER) QueryWrapper<User> wrapper,@Param("amount") int amount);
}
<mapper namespace="com.itheima.mp.mapper.UserMapper"><update id="updateBalanceByIds">update tb_user set balance = balance - #{amount} ${ew.customSqlSegment}</update></mapper>
运行结果图:
这篇关于自定义sql语句,但复杂的where部分由条件构造器wrapper来完成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!