Wrapper 是所有条件构造器的父类,作用是生成条件语句,即where后面的sql子句
在调用查询,更新,删除操作时,需要根据条件进行判断,可以使用条件构造器进行组合条件,生成where后面条件子句
QueryWrapper,UpdateWrapper
LambdaQueryWrapper,LambdaUpdateWrapper
UpdateWrapper提供了set方法,可以设置更新后的数据
QueryWrapper,可以对查询,更新,删除操作进行条件组合
LambdaQueryWrapper、LambdaUpdateWrapper支持Lambda表达式,可以通过Lambda表达式获取到对应的字段,省去字段名的编写
有Lambda前缀的,表示支持Lambda表达式
application.yml
server:
port: 8080
#数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus212?characterEncoding=utf-8&serverTimezone=UTC
username: root
password: 123456
type: com.zaxxer.hikari.HikariDataSource
mybatis-plus:
configuration:
#配置日志信息
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置mapper映射文件的位置,默认在类路径/mapper*.xml
mapper-locations: classpath:/mapper/*.xml
#设置指定包下所有类设置类型别名
type-aliases-package: com.dzqc.pojo
global-config:
db-config:
#统一设置实体类对应的数据表的默认前缀
table-prefix: t_
#设置主键自增
id-type: auto
Wrapper测试类
package com.dzqc;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.dzqc.pojo.User;
import com.dzqc.service.IUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
* 测试条件构造器
* 组合where后面条件子句
* QueryWrapper
* UpdateWrapper
*/
@SpringBootTest
public class WrapperTest {
@Autowired
private IUserService userService;
@Test
public void testWapperTest(){
//根据id查询用户信息
//select*from t_user where id=4
//创建条件构造器
QueryWrapper<User> objectQueryWrapper = new QueryWrapper<>();
//组合条件 连缀操作
objectQueryWrapper.eq("u_id",4)
.likeRight("u_name","李")
.ge("age",20)
.isNotNull("email");
List<User> list = userService.list(objectQueryWrapper);
System.out.println("list = " + list);
}
//测试 并且 或者 条件
@Test
public void testWrapper(){
//更新 年龄大于20 或者 邮箱不为空的 用户姓名 为 小章
// UPDATE t_user SET u_name=? WHERE is_delete=0 AND (age > ? OR email IS NULL)
//创建 条件构造器
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.gt("age",25)
.or()
.isNull("email");
//更新后用户数据
User user = new User();
user.setName("李华");
boolean update = userService.update(user, updateWrapper);
System.out.println("update = " + update);
}
//测试删除
@Test
public void testWrappper2(){
QueryWrapper<User> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("u_id",2).or().isNotNull("age");
boolean remove = userService.remove(objectQueryWrapper);
System.out.println("remove = " + remove);
}
@Test
public void testWrapper3(){
LambdaQueryWrapper<User> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
objectLambdaQueryWrapper.ge(User::getId,2)
.likeRight(User::getName,"李")
.ge(User::getAge,24)
.isNotNull(User::getEmail);
List<User> list = userService.list(objectLambdaQueryWrapper);
list.forEach(System.out::println);
}
@Test
public void testWrapper7(){
//更新
LambdaUpdateWrapper<User> objectLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
objectLambdaUpdateWrapper.isNull(User::getEmail);
//更新后数据
objectLambdaUpdateWrapper.set(User::getAge,18);
boolean update = userService.update(null, objectLambdaUpdateWrapper);
System.out.println("update = " + update);
}
@Test
public void testWrapper8(){
Integer age=19;
//查询年龄不为空的用户信息,进行删除
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName,"王五")
.or()
.isNotNull(User::getEmail)
.isNotNull(User::getAge);
boolean remove = userService.remove(lambdaUpdateWrapper);
System.out.println("remove = " + remove);
}
}
版权归原作者 kongbaidaima 所有, 如有侵权,请联系我们删除。