网站显示建设中页面,青岛崂山建设局网站,优秀的个人网站设计模板,网页设计师考证试题前置配置文章
一、wapper介绍 wrapper的继承体系#xff1a; Wrapper #xff1a; 条件构造抽象类#xff0c;最顶端父类 AbstractWrapper #xff1a; 用于查询条件封装#xff0c;生成 sql 的 where 条件 QueryWrapper #xff1a; 查询条件封装UpdateWrapper #x…前置配置文章
一、wapper介绍 wrapper的继承体系 Wrapper 条件构造抽象类最顶端父类 AbstractWrapper 用于查询条件封装生成 sql 的 where 条件 QueryWrapper 查询条件封装UpdateWrapper Update条件封装AbstractLambdaWrapper 使用Lambda语法 LambdaQueryWrapper 用于Lambda语法使用的查询WrapperLambdaUpdateWrapper Lambda更新封装Wrapper
二、QueryWrapper 1.常用方法 2.关于QueryWrapper的一些测试案例
package com.qcby;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qcby.SpringBoot.mapper.UserMapper;
import com.qcby.SpringBoot.pojo.User;
import com.qcby.SpringBoot.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.*;SpringBootTestpublic class MybatisPlusTest {Autowired private UserMapper userMapper;//测试条件构造器 Test public void test01(){//查询用户名包含a年龄在20到30之间并且邮箱不为null的用户信息 //SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted0 AND (username LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL) QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.like(name, a).between(age, 20, 30).isNotNull(email);ListUser list userMapper.selectList(queryWrapper);list.forEach(System.out::println);}Test public void test02(){//按年龄降序查询用户如果年龄相同则按id升序排列 //SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted0 ORDER BY age DESC,id ASC QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.orderByDesc(age).orderByAsc(id);ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println);}Test public void test03(){//删除email为空的用户并非真正的删除而是逻辑删除 //DELETE FROM t_user WHERE (email IS NULL) QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.isNull(email);//条件构造器也可以构建删除语句的条件 int result userMapper.delete(queryWrapper);System.out.println(受影响的行数 result);}Test public void test04() {QueryWrapperUser queryWrapper new QueryWrapper();//将年龄大于20并且用户名中包含有a或邮箱为null的用户信息修改 //UPDATE t_user SET age?, email? WHERE (username LIKE ? AND age ? OR email IS NULL) queryWrapper .like(name, a).gt(age, 20).or().isNull(email);User user new User();user.setAge(18);user.setEmail(useratguigu.com);int result userMapper.update(user, queryWrapper);System.out.println(受影响的行数 result);}Test public void test05() {QueryWrapperUser queryWrapper new QueryWrapper();//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改 //UPDATE t_user SET age?, email? WHERE (username LIKE ? AND (age ? OR email IS NULL)) //lambda表达式内的逻辑优先运算 //lambda中的i仍然表示该wrapper对象 queryWrapper.like(name, a).and(i - i.gt(age, 20).or().isNull(email));User user new User();user.setAge(18);user.setEmail(useratguigu.com);int result userMapper.update(user, queryWrapper);System.out.println(受影响的行数 result);}Testpublic void test06() {//查询用户信息的username和age字段 //SELECT username,age FROM t_user QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.select(name, age);//selectMaps()返回Map集合列表通常配合select()使用避免User对象中没有被查询到的列值 为null ListMapString, Object maps userMapper.selectMaps(queryWrapper); maps.forEach(System.out::println);}Testpublic void test07() {//查询id小于等于3的用户信息 //SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE (id IN (select id from t_user where id 3)) QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.inSql(id, select id from t_user where id 3);ListUser list userMapper.selectList(queryWrapper);list.forEach(System.out::println);}
}3.UpdateWrapper
Testpublic
void test08() {//将年龄大于20或邮箱为null并且用户名中包含有a的用户信息修改 //组装set子句以及修改条件 UpdateWrapperUser updateWrapper new UpdateWrapper();//lambda表达式内的逻辑优先运算 updateWrapper .set(age, 18).set(email, useratguigu.com).like(name, a).and(i - i.gt(age, 20).or().isNull(email));//这里必须要创建User对象否则无法应用自动填充。如果没有自动填充可以设置为null //UPDATE t_user SET username?, age?,email? WHERE (username LIKE ? AND (age ? OR email IS NULL)) //User user new User(); //user.setName(张三); //int result userMapper.update(user, updateWrapper); //UPDATE t_user SET age?,email? WHERE (username LIKE ? AND (age ? OR email IS NULL)) int result userMapper.update(null, updateWrapper);System.out.println(result);
} 4.condition 条件判断的两种格式
Test
public void test09() {//定义查询条件有可能为null用户未输入或未选择 String username null;Integer ageBegin 10;Integer ageEnd 24;QueryWrapperUser queryWrapper new QueryWrapper();//StringUtils.isNotBlank()判断某字符串是否不为空且长度不为0且不由空白符(whitespace) 构成 if(StringUtils.isNotBlank(username)){queryWrapper.like(name,a);}if(ageBegin ! null){queryWrapper.ge(age, ageBegin);}if(ageEnd ! null){queryWrapper.le(age, ageEnd);}//SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE (age ? AND age ?) ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println);
}
Test
public void test08UseCondition() {//定义查询条件有可能为null用户未输入或未选择 String username null;Integer ageBegin 10;Integer ageEnd 24;QueryWrapperUser queryWrapper new QueryWrapper();//StringUtils.isNotBlank()判断某字符串是否不为空且长度不为0且不由空白符(whitespace) 构成 queryWrapper .like(StringUtils.isNotBlank(username), name, a).ge(ageBegin ! null, age, ageBegin).le(ageEnd ! null, age, ageEnd);//SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE (age ? AND age ?) ListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println);
} 5.LambdaQueryWrapper和LambdaUpdateWrapper
Testpublic
void test11() {//组装set子句 LambdaUpdateWrapperUser updateWrapper new LambdaUpdateWrapper();updateWrapper .set(User::getAge, 18).set(User::getEmail, useratguigu.com).like(User::getName, a).and(i - i.lt(User::getAge, 24).or().isNull(User::getEmail)); //lambda 表达式内的逻辑优先运算 User user new User();int result userMapper.update(user, updateWrapper);System.out.println(受影响的行数 result);
}