网站建设选择什么系统好,初级程序员与网站开发,比较好的品牌策划公司有哪些,网站的经营方式目录
1. 自定义SQL介绍
2. 自定义SQL使用步骤
3. 自定义SQL实例
4.总结 1. 自定义SQL介绍 介绍#xff1a;自定义SQL并不是由我们来编写全部SQL语句#xff0c;而是通过利用MyBatisPlus的Wrapper来构建复杂的Where条件#xff0c;然后自己定义SQL语句中剩下的部分。 使…目录
1. 自定义SQL介绍
2. 自定义SQL使用步骤
3. 自定义SQL实例
4.总结 1. 自定义SQL介绍 介绍自定义SQL并不是由我们来编写全部SQL语句而是通过利用MyBatisPlus的Wrapper来构建复杂的Where条件然后自己定义SQL语句中剩下的部分。 使用需求如果我们想要对数据库某字段进行直接赋值那么可以在Mapper层或者.xml层编写对应的SQL语句。如果我们要对数据库某字段进行特殊赋值或者动态赋值又或者其他复杂的操作如更新字段balancebalance20我们不得不在业务层进行编写而这样会导致代码编写不符合规范SQL语句需要在Mapper层中编写但直接编写SQL语句又十分冗长麻烦。因此我们可以使用自定义SQL的功能将where条件交给MP编写而剩余的Update、Select等语句由我们自定义编写如下图所示。 2. 自定义SQL使用步骤 自定义SQL方法在业务层定义where条件和需要使用的参数并将where条件与参数传入自定义Mapper方法中最后在Mapper方法或者xml文件中自定义编写剩余的SQL语句。 3. 自定义SQL实例
通过自定义SQL实现如下SQL语句
update tb_user set balance balance - 200 WHERE (id IN (1,2,4)) /*Service层*/Testvoid testCustomSqlUpdate() {//1. 设置更新条件ListLong ids List.of(1L, 2L, 4L);int amount 200;//2. 定义where条件LambdaQueryWrapper wrapper new LambdaQueryWrapperUser().in(User::getId, ids);//3. 调用自定义SQL方法userMapper.updateBalanceByIds(wrapper, amount);}
/*Mapper层*/Mapperpublic interface UserMapper extends BaseMapperUser {//如果忘记ew可以用WRAPPER的常量代替Param(Constants.WRAPPER) void updateBalanceByIds(Param(ew) LambdaQueryWrapper wrapper, Param(amount) int amount);}
!-- xml文件 --update idupdateBalanceByIdsupdate tb_user set balance balance - #{amount} ${ew.customSqlSegment}/update 4.总结 总结自定义SQL方法在业务层定义where条件和需要使用的参数并将where条件与参数传入自定义Mapper方法中最后在Mapper方法或者xml文件中自定义编写剩余的SQL语句。 使用场景当遇到SQL语句中除where条件之外的语句很难用MP编写的情况下可以使用自定义SQL。