MyBatis-Plus条件构造器之wapper介绍
- 1.0 wapper的介绍
- 2.0 wapper的使用
- 2.1 查询 中使用 wapper (selectList)
- 2.2 升序降序 中使用 wapper (selectList)
- 2.3 删除中使用 wapper (delect)
- 2.4 修改中使用 wapper (update)
- 2.5 条件优先级 中使用 wapper (update)
- 2.7 组装子查询字段 根据需求查相关的字段使用 wapper (select)
- 2.8 修改中使用 UpdateWrapper(Update)
- 2.9 组装条件中使用 QueryWrapper(seelect)
- 2.9.1 使用condition组装条件 (select)
- 3.0 使用LambdaQueryWrapper查询条件 (select)
- 4.0 此模块代码集合
文章顺序及整体目录可查看(点我即可)
1.0 wapper的介绍
(网上找的图片)
名词 | 释义 |
---|---|
Wrapper : | 条件构造抽象类,最顶端父类 |
AbstractWrapper : | 用于查询条件封装,生成 sql 的 where 条件 |
QueryWrapper : | 查询条件封装 |
UpdateWrapper : | Update 条件封装 |
AbstractLambdaWrapper : | 使用Lambda 语法 |
LambdaQueryWrapper : | 用于Lambda语法使用的查询Wrapper |
LambdaUpdateWrapper : | Lambda 更新封装Wrapper |
其中洗下面的这些方法全部都是以为wapper方法体
2.0 wapper的使用
2.1 查询 中使用 wapper (selectList)
按照上面的图形结构结合我们使用的查询功能 故用QueryWrapper ;
@Test
public void slelectWrapper(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//此处指明column 指的是数据库的字段并非实体类对象请大家注意
// like:模糊查询 between 范围 大于10小于30 isnull 字段不为空的数据
queryWrapper.like("user_name","老王")
.between("age",10,30)
.isNotNull("email");
///查询用户为 老王的 年龄范围在10-30之间的并且邮箱不为空的数据
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
运行结果为:
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_delect FROM t_user WHERE is_delect=0 AND (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
==> Parameters: %老王%(String), 10(Integer), 30(Integer)
<== Columns: id, name, age, email, is_delect
<== Row: 4, 我是老王, 18, test4@baomidou.com, 0
<== Row: 1577321026130407426, 老王, 10, 757631644001, 0
<== Row: 1577321026298179585, 老王超1, 11, 757631644111, 0
<== Total: 3
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ce53f6a]
User(id=4, name=我是老王, age=18, email=test4@baomidou.com, isDelect=0)
User(id=1577321026130407426, name=老王, age=10, email=757631644001, isDelect=0)
User(id=1577321026298179585, name=老王超1, age=11, email=757631644111, isDelect=0)
2.2 升序降序 中使用 wapper (selectList)
@Test
public void slelectWrapperAsc(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//orderByDesc 降序 orderByAsc 升序
queryWrapper.orderByDesc("age")
.orderByAsc("id");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
运行结果入如下:
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_delect FROM t_user WHERE is_delect=0 ORDER BY age DESC,id ASC
==> Parameters:
<== Columns: id, name, age, email, is_delect
<== Row: 15, 闫文超9, 19, 757631644991, 0
<== Row: 4, 我是老王, 18, test4@baomidou.com, 0
<== Row: 14, 闫文超8, 18, 757631644881, 0
<== Row: 13, 闫文超7, 17, 757631644771, 0
<== Row: 12, 闫文超6, 16, 757631644661, 0
<== Row: 11, 闫文超5, 15, 757631644551, 0
<== Row: 10, 闫文超4, 14, 757631644441, 0
<== Row: 5, Billie, 10, test5@baomidou.com, 0
<== Row: 6, 老王, 10, 757631644001, 0
<== Row: 7, 老王超1, 10, 757631644111, 0
<== Row: 8, 闫文超2, 10, 757631644221, 0
<== Row: 9, 闫文超3, 10, 757631644331, 0
<== Total: 12
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19650aa6]
User(id=15, name=闫文超9, age=19, email=757631644991, isDelect=0)
User(id=4, name=我是老王, age=18, email=test4@baomidou.com, isDelect=0)
User(id=14, name=闫文超8, age=18, email=757631644881, isDelect=0)
User(id=13, name=闫文超7, age=17, email=757631644771, isDelect=0)
User(id=12, name=闫文超6, age=16, email=757631644661, isDelect=0)
User(id=11, name=闫文超5, age=15, email=757631644551, isDelect=0)
User(id=10, name=闫文超4, age=14, email=757631644441, isDelect=0)
User(id=5, name=Billie, age=10, email=test5@baomidou.com, isDelect=0)
User(id=6, name=老王, age=10, email=757631644001, isDelect=0)
User(id=7, name=老王超1, age=10, email=757631644111, isDelect=0)
User(id=8, name=闫文超2, age=10, email=757631644221, isDelect=0)
User(id=9, name=闫文超3, age=10, email=757631644331, isDelect=0)
2.3 删除中使用 wapper (delect)
@Test
public void delectWrapperAsc(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//orderByDesc 降序 orderByAsc 升序
queryWrapper.eq("email","757631644771");
//删除邮箱为空的数据(因为我们加入了逻辑删除的注解实体类属性我们实现的删除也只是 修改他的字段为假删除 不需要删除即可)
int result = userMapper.delete(queryWrapper);
System.out.println(result);
}
如果不行实现逻辑删除则把实体相管内容注解去掉即可;
运行结果为
==> Preparing: UPDATE t_user SET is_delect=1 WHERE is_delect=0 AND (email = ?)
==> Parameters: 757631644771(String)
<== Updates: 2
2.4 修改中使用 wapper (update)
@Test
public void UpdatetWrapperAsc(){
//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//并且 是and 默认就是and 但是 或的话就需要 手动添加or 条件了
//gt 是大于
queryWrapper.gt("age",20)
.like("user_name","a")
.or()
.isNull("email");
User user = new User();
user.setEmail("757631644@qq.com");
user.setName("老闫");
user.setAge(666);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(user,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
运行结果为:
==> Preparing: UPDATE t_user SET user_name=?, age=?, email=? WHERE is_delect=0 AND (age >= ? AND user_name LIKE ? OR email IS NULL)
==> Parameters: 老闫(String), 666(Integer), 757631644@qq.com(String), 20(Integer), %a%(String)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7fd8c559]
修改成功
修改条数1
2.5 条件优先级 中使用 wapper (update)
lambda 优先运行在and 包围的情况下;
@Test
public void UpdatetWrapper(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper .like("user_name","a")
.and(i->i.gt("age",20)
.or()
.isNull("email"));
User user = new User();
user.setEmail("757631644@qq.com");
user.setName("老闫");
user.setAge(666);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(user,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
运行结果为:
==> Preparing: UPDATE t_user SET user_name=?, age=?, email=? WHERE is_delect=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
==> Parameters: 老闫(String), 666(Integer), 757631644@qq.com(String), %a%(String), 20(Integer)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@8f2098e]
修改成功
修改条数1
@Test
public void slelectWrappers(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//根据需求查询部分字段
queryWrapper.select("age","user_name");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
list.forEach(System.out::println);
}
运行结果为
==> Preparing: SELECT age,user_name FROM t_user WHERE is_delect=0
==> Parameters:
<== Columns: age, user_name
<== Row: 18, 我是老王
<== Row: 10, Billie
<== Row: 10, 老王
<== Row: 10, 老王超1
<== Row: 10, 闫文超2
<== Row: 10, 闫文超3
<== Row: 14, 闫文超4
<== Row: 16, 闫文超6
<== Row: 666, 老闫
<== Row: 666, 老闫
<== Total: 10
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@67a3bd51]
{user_name=我是老王, age=18}
{user_name=Billie, age=10}
{user_name=老王, age=10}
{user_name=老王超1, age=10}
{user_name=闫文超2, age=10}
{user_name=闫文超3, age=10}
{user_name=闫文超4, age=14}
{user_name=闫文超6, age=16}
{user_name=老闫, age=666}
{user_name=老闫, age=666}
2.7 组装子查询字段 根据需求查相关的字段使用 wapper (select)
@Test
public void slelectWrappersSql(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//查询uid并对他赋予条件
queryWrapper.inSql("uid","SELECT uid FROM t_user WHERE uid<=100");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_delect FROM t_user WHERE is_delect=0 AND (uid IN (SELECT uid FROM t_user WHERE uid<=100))
==> Parameters:
<== Columns: id, name, age, email, is_delect
<== Row: 4, 我是老王, 18, test4@baomidou.com, 0
<== Row: 5, Billie, 10, test5@baomidou.com, 0
<== Row: 6, 老王, 10, 757631644001, 0
<== Row: 7, 老王超1, 10, 757631644111, 0
<== Row: 8, 闫文超2, 10, 757631644221, 0
<== Row: 9, 闫文超3, 10, 757631644331, 0
<== Row: 10, 闫文超4, 14, 757631644441, 0
<== Row: 12, 闫文超6, 16, 757631644661, 0
<== Row: 14, 老闫, 666, 757631644@qq.com, 0
<== Row: 15, 老闫, 666, 757631644@qq.com, 0
<== Total: 10
User(id=4, name=我是老王, age=18, email=test4@baomidou.com, isDelect=0)
User(id=5, name=Billie, age=10, email=test5@baomidou.com, isDelect=0)
User(id=6, name=老王, age=10, email=757631644001, isDelect=0)
User(id=7, name=老王超1, age=10, email=757631644111, isDelect=0)
User(id=8, name=闫文超2, age=10, email=757631644221, isDelect=0)
User(id=9, name=闫文超3, age=10, email=757631644331, isDelect=0)
User(id=10, name=闫文超4, age=14, email=757631644441, isDelect=0)
User(id=12, name=闫文超6, age=16, email=757631644661, isDelect=0)
User(id=14, name=老闫, age=666, email=757631644@qq.com, isDelect=0)
User(id=15, name=老闫, age=666, email=757631644@qq.com, isDelect=0)
2.8 修改中使用 UpdateWrapper(Update)
在这里插入图片描述
@Test
public void UpdatetWrapper011(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
queryWrapper .like("user_name","a")
.and(i->i.gt("age",20)
.or()
.isNull("email"));
queryWrapper.set("user_name","我很心烦").set("age",888);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(null,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
运行结果为:
==> Preparing: UPDATE t_user SET user_name=?,age=? WHERE is_delect=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
==> Parameters: 我很心烦(String), 888(Integer), %a%(String), 20(Integer)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@60859f5a]
修改成功
修改条数1
2.9 组装条件中使用 QueryWrapper(seelect)
@Test
public void selectList(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotBlank(username)){
//isNotBlank判断某个字符创是否不为空字符串、不为null、不为空白符
queryWrapper.like("user_name", username);
}
if(ageBegin != null){
//ge 大于等于
queryWrapper.ge("age", ageBegin);
}
if(ageEnd != null){
//le 小于于等于
queryWrapper.le("age", ageEnd);
}
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
运行结果
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_delect FROM t_user WHERE is_delect=0 AND (user_name LIKE ? AND age <= ?)
==> Parameters: %a%(String), 30(Integer)
<== Columns: id, name, age, email, is_delect
<== Row: 14, aa, 22, 757631644@qq.com, 0
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ce53f6a]
User(id=14, name=aa, age=22, email=757631644@qq.com, isDelect=0)
2022-10-08 23:16:50.583 INFO 16404 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2022-10-08 23:16:50.587 INFO 16404 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Process finished with exit code 0
2.9.1 使用condition组装条件 (select)
上面的(2.9)实现方案没有问题,但是代码比较复杂,我们可以使用带condition参数的重载方法构建查询条件,简化代码的编写
@Test
public void selectList01(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//插入3个参数第一个:判断条件 2:k的值 3: v的值
queryWrapper.like(StringUtils.isNotBlank(username), "user_name", username)
.ge(ageBegin != null, "age", ageBegin)
.le(ageEnd != null, "age", ageEnd);
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
运行结果为:
==> Parameters: %a%(String), 30(Integer)
<== Columns: id, name, age, email, is_delect
<== Row: 14, aa, 22, 757631644@qq.com, 0
<== Total: 1
3.0 使用LambdaQueryWrapper查询条件 (select)
@Test
public void LambdaQueryWrapper(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
//插入3个参数第一个:判断条件 2:k的值 (为了防止写错他获取的User中getName的实体类的名字) 3: v的值
queryWrapper.like(StringUtils.isNotBlank(username), User::getName, username)
.ge(ageBegin != null, User::getAge, ageBegin)
.le(ageEnd != null, User::getAge, ageEnd);
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
运行结果为:
==> Preparing: SELECT uid AS id,user_name AS name,age,email,is_delect FROM t_user WHERE is_delect=0 AND (user_name LIKE ? AND age <= ?)
==> Parameters: %a%(String), 30(Integer)
<== Columns: id, name, age, email, is_delect
<== Row: 14, aa, 22, 757631644@qq.com, 0
<== Total: 1
3.1 使用LambdaUpdateWrapper查询条件 (update)
@Test
public void LambdaUpdateWrapper(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
LambdaUpdateWrapper<User> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper .like(User::getName,"a")
.and(i->i.gt(User::getAge,20)
.or()
.isNull(User::getEmail));
queryWrapper.set(User::getName,"我很心烦").set(User::getAge,888);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(null,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
运行结果为:
JDBC Connection [HikariProxyConnection@976042249 wrapping com.mysql.cj.jdbc.ConnectionImpl@4fb392c4] will not be managed by Spring
==> Preparing: UPDATE t_user SET user_name=?,age=? WHERE is_delect=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
==> Parameters: 我很心烦(String), 888(Integer), %a%(String), 20(Integer)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@242a209e]
修改成功
修改条数1
4.0 此模块代码集合
package com.example;
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.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.example.mapper.UserMapper;
import com.example.pojo.User;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.xml.ws.Action;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class MyBatisPlusWraspperTest {
@Autowired
private UserMapper userMapper;
@Test
public void slelectWrapper(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//此处指明column 指的是数据库的字段并非实体类对象请大家注意
// like:模糊查询 between 范围 大于10小于30 isnull 字段不为空的数据
queryWrapper.like("user_name","老王")
.between("age",10,30)
.isNotNull("email");
//查询用户为 老王的 年龄范围在10-30之间的并且邮箱不为空的数据
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void slelectWrapperAsc(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//orderByDesc 降序 orderByAsc 升序
queryWrapper.orderByDesc("age")
.orderByAsc("id");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void delectWrapperAsc(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//orderByDesc 降序 orderByAsc 升序
queryWrapper.eq("email","757631644771");
//删除邮箱为空的数据(因为我们加入了逻辑删除的注解实体类属性我们实现的删除也只是 修改他的字段为假删除 不需要删除即可)
int result = userMapper.delete(queryWrapper);
System.out.println(result);
}
@Test
public void UpdatetWrapperAsc(){
//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//并且 是and 默认就是and 但是 或的话就需要 手动添加or 条件了
//ge 是大于
queryWrapper.ge("age",20)
.like("user_name","a")
.or()
.isNull("email");
User user = new User();
user.setEmail("757631644@qq.com");
user.setName("老闫");
user.setAge(666);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(user,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
@Test
public void UpdatetWrapper(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper .like("user_name","a")
.and(i->i.gt("age",20)
.or()
.isNull("email"));
User user = new User();
user.setEmail("757631644@qq.com");
user.setName("老闫");
user.setAge(666);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(user,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
@Test
public void slelectWrappers(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//根据需求查询部分字段
queryWrapper.select("age","user_name");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void slelectWrappers01(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//根据需求查询部分字段
queryWrapper.select("age","user_name");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<Map<String, Object>> list = userMapper.selectMaps(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void slelectWrappersSql(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//查询uid并对他赋予条件
queryWrapper.inSql("uid","SELECT uid FROM t_user WHERE uid<=100");
//查询用户年龄并降序排列,年龄相同的按照id升序排序
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void UpdatetWrapper011(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
UpdateWrapper<User> queryWrapper = new UpdateWrapper<>();
queryWrapper .like("user_name","a")
.and(i->i.gt("age",20)
.or()
.isNull("email"));
queryWrapper.set("user_name","我很心烦").set("age",888);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(null,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
@Test
public void selectList(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotBlank(username)){
//isNotBlank判断某个字符创是否不为空字符串、不为null、不为空白符
queryWrapper.like("user_name", username);
}
if(ageBegin != null){
//ge 大于等于
queryWrapper.ge("age", ageBegin);
}
if(ageEnd != null){
//le 小于于等于
queryWrapper.le("age", ageEnd);
}
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void selectList01(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//插入3个参数第一个:判断条件 2:k的值 3: v的值
queryWrapper.like(StringUtils.isNotBlank(username), "user_name", username)
.ge(ageBegin != null, "age", ageBegin)
.le(ageEnd != null, "age", ageEnd);
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void LambdaQueryWrapper(){
String username = "a";
Integer ageBegin = null;
Integer ageEnd = 30;
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
//插入3个参数第一个:判断条件 2:k的值 (为了防止写错他获取的User中getName的实体类的名字) 3: v的值
queryWrapper.like(StringUtils.isNotBlank(username), User::getName, username)
.ge(ageBegin != null, User::getAge, ageBegin)
.le(ageEnd != null, User::getAge, ageEnd);
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
@Test
public void LambdaUpdateWrapper(){
//将用户名中包含有a并且(年龄大于20或邮箱为null)的用户信息修改
// 并且用and 包住mybatis中 lambda 优先运行
//将 queryWrapper .like(a) and (年龄大于20或邮箱为null ==>
// (i->i.ge("age",20) .or().isNull("email"))的 用户的用户的信息进行修改
LambdaUpdateWrapper<User> queryWrapper = new LambdaUpdateWrapper<>();
queryWrapper .like(User::getName,"a")
.and(i->i.gt(User::getAge,20)
.or()
.isNull(User::getEmail));
queryWrapper.set(User::getName,"我很心烦").set(User::getAge,888);
//两个参数第一个 修改的用户体对象 第二天是判断的条件
int result = userMapper.update(null,queryWrapper);
//三目运算
System.out.println(result>0 ? "修改成功" :"修改失败");
System.out.println("修改条数"+result);
}
}
到此为止wapper学习结束了;
版权声明:本文为qq_42055933原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。