目录
- 一、概述
- 二、QueryWrapper
- 三、LambdaQueryWrapper
- 四、UpdateWrapper
- 五、LambdaUpdateWrapper
- 五、自定义SQL
一、概述
通过构建各种复杂的where条件,满足日常开发中的所有需求
二、QueryWrapper
@Test void testQueryWrapper() { QueryWrapper<User> wrapper = new QueryWrapper<User>().like("username", "张"); List<User> users = userService.list(wrapper); System.out.println(users); }
三、LambdaQueryWrapper
@Test void testLambdaQueryWrapper() { LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>() .like(User::getUsername, "张"); List<User> users = userService.list(wrapper); System.out.println(users); }
四、UpdateWrapper
@Test void testUpdateWrapper() { // 要修改的数据 User user = User.builder().username("张三").build(); // where查询条件 UpdateWrapper<User> wrapper = new UpdateWrapper<User>().eq("id", 1); userService.update(user, wrapper); }
五、LambdaUpdateWrapper
@Test void testLambdaUpdateWrapper() { // 要修改的数据 User user = User.builder().username("张三**").build(); // where查询条件 LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>().eq(User::getId, 1); userService.update(user, wrapper); }
五、自定义SQL
将ID为 1,2,3的用户金额减 10
@Test void testCustomSQL() { List<Integer> ids = List.of(1, 2, 3); Integer amount = 10; LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>().in(User::getId, ids); userService.updateVagueByIds(wrapper, amount); }
public interface IUserService extends IService<User> { /** * 自定义SQL修改用户数据 * @param wrapper */ void updateVagueByIds(LambdaUpdateWrapper<User> wrapper, Integer amount); }
@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { /** * 自定义SQL修改用户数据 * * @param wrapper * @param amount */ @Override public void updateVagueByIds(LambdaUpdateWrapper<User> wrapper, Integer amount) { this.baseMapper.updateVagueByIds(wrapper, amount); } }
注意:这里
ServiceImpl 已经指定了泛型为UserMapper ,所以我们在调用Mapper接口的时候直接使用this.baseMapper 即可,不需要再依赖注入。
@Mapper public interface UserMapper extends BaseMapper<User> { void updateVagueByIds(@Param(Constants.WRAPPER) LambdaUpdateWrapper<User> wrapper, @Param("amount") Integer amount); }
注意:这里的wrpper条件构造器需要增加
@Param(Constants.WRAPPER)指定ew 表明这个参数是一个条件构造器。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.ming.mapper.UserMapper"> <update id="updateVagueByIds"> update user set balance = balance - #{amount} ${ew.customSqlSegment} </update> </mapper>
注意:这里使用条件构造器的方法为
${ew.customSqlSegment} ,不需要增加where语句,直接再SQL条件的后面进行增加