网站 收费,app是怎么制作的,html5网站引导页模板,阿里云可以做电影网站吗QueryWrapper是MyBatis-Plus中的一个查询封装类#xff0c;用于构建带有条件的查询语句。
1. QueryWrapper
使用普通的方式来设置查询条件#xff0c;而不是使用Lambda表达式。
一系列方法设置查询条件。手动指定数据库表的列名作为方法的参数 select 设置查询的字段 eq、…QueryWrapper是MyBatis-Plus中的一个查询封装类用于构建带有条件的查询语句。
1. QueryWrapper
使用普通的方式来设置查询条件而不是使用Lambda表达式。
一系列方法设置查询条件。手动指定数据库表的列名作为方法的参数 select 设置查询的字段 eq、ne、gt、ge、lt、le 设置等于、不等于、大于、大于等于、小于、小于等于。 orderBy 排序方式 last 自定义SQL语句
2.区别
LambdaQueryChainWrapper使用Lambda表达式来设置查询条件更加直观和类型安全-而QueryWrapper使用普通方式来设置查询条件更加灵活和通用
3.代码示例
package com.example.demo.mybatisplus.service;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.zmybatisplus.entity.User;
import com.example.demo.zmybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;SpringBootTest
public class UserTest {Autowiredprivate UserMapper userMapper;//---------------------------------- 查询 ---------------------------------------------------//简单查询Testpublic void testSelect() {//所有ListUser userList userMapper.selectList(null);userList.forEach(System.out::println);//多个ListUser userList2 userMapper.selectBatchIds(Arrays.asList(1L,2L,3L));userList2.forEach(System.out::println);//单个User user3 userMapper.selectById(1L);System.out.println(user3);}//等值条件查询-- HashMapTestpublic void testSelectByMap() {HashMapString, Object map new HashMap();//定义查询条件map.put(name, 小垃圾); //where k vmap.put(age,0);ListUser users userMapper.selectByMap(map);users.forEach(System.out::println);}//Wrapper查询---1.数字的比较 2.字符串的模糊查询Testpublic void testSelectByWrapper() {//链式调用构造查询条件QueryWrapperUser queryWrappernew QueryWrapper();queryWrapper.isNotNull(name).like(email,john).le(age,26).lt(version,2).orderByAsc(id,age);//选择API执行queryListUser users userMapper.selectList(queryWrapper);users.forEach(System.out::println);// eq相等 ne不相等 gt大于 lt小于 ge大于等于 le 小于等于// equal/ not equal/ greater than/ less than/ less than or equal/ great than or equal///模糊查询 like notLike likeLeft%x likeRight notLikeLeft notLikeRight}//Wrapper查询---1. 查询区间内的记录 between// 2.集合 in in notIninSql notInSqlTestvoid test2SelectByWrapper(){//查询区间内的记录 betweenQueryWrapperUser wrapper new QueryWrapper();wrapper.isNotNull(name).between(age,20,30);Long count userMapper.selectCount(wrapper);System.out.println(count count);//集合IN in notInQueryWrapperUser queryWrappernew QueryWrapper();queryWrapper.in(id,Arrays.asList(1L,2L,3L,4L));Long cuserMapper.selectCount(queryWrapper);System.out.println(countc);// 集合 IN ( sql语句 ) : inSql notInSql//例: inSql(age, 1,2,3,4,5,6)---age in (1,2,3,4,5,6)//例: inSql(id, select id from table where id 3)---id in (select id from table where id 3)QueryWrapperUser queryWrapper2new QueryWrapper();//queryWrapper2.inSql(id,1,2,3,4);//两种写法queryWrapper2.inSql(id,select id from user where id4);Long c2userMapper.selectCount(queryWrapper);System.out.println(countc2);}//Wrapper查询---分组查询 groupBy havingTestpublic void testGroupByByWrapper(){QueryWrapperUser wrappernew QueryWrapper();wrapper.select(version,sum(age) as num).groupBy(version).having(sum(age)0).orderByDesc(num);//使用Map获取返回结果ListMapString,Object listuserMapper.selectMaps(wrapper);list.forEach(System.out::println);}//Wrapper更新---Testpublic void testUpdateWrapper() {//修改--所有的记录// //方式1
// UpdateWrapperUser updateWrappernew UpdateWrapper();
// updateWrapper.set(name,updateName).set(email,null);
// userMapper.update(updateWrapper);
//
// //方式2
// String sql name updateName1, email null ;
// int affectedRows userMapper.update(new UpdateWrapperUser().setSql(sql));
// System.out.println(Affected rows: affectedRows);//修改 -- id1的记录 UpdateWrapper拥有 QueryWrapper一样的条件方法UpdateWrapperUser updateWrapper2 new UpdateWrapper();updateWrapper2.set(name, updateName111).set(email, 人文氛围v给xxx123.cpm).eq(id, 1);userMapper.update(null, updateWrapper2);}//分页查询Testpublic void testPage() {PageUser page new Page(2,5); //开启拦截器后会注册一个page对象 当前页每页条数//方法源码 P extends IPageT P selectPage(P page, Param(Constants.WRAPPER) WrapperT queryWrapper);userMapper.selectPage(page,null); //分页查询page.getRecords().forEach(System.out::println); //获取分页后的数据 打印System.out.println(page.getTotal()); //获取记录总数}//链式查询: 使用 Lambda 表达式的链式查询对象/*public ListUser getUserListByQueryWrapper() {QueryWrapperUser queryWrapper new QueryWrapper();queryWrapper.eq(age, 25).like(name, John).orderByDesc(create_time);ListUser userList userMapper.selectList(queryWrapper);return userList;}public ListUser getUserListByLambdaQueryChainWrapper() {LambdaQueryChainWrapperUser lambdaQueryWrapper new LambdaQueryChainWrapper(userMapper);lambdaQueryWrapper.eq(User::getAge, 25).like(User::getName, John).orderByDesc(User::getCreateTime);ListUser userList lambdaQueryWrapper.list();return userList;}public ListUser getUserListByLambdaQueryChainWrapperWithPage(int pageNum, int pageSize) {LambdaQueryChainWrapperUser lambdaQueryWrapper new LambdaQueryChainWrapper(userMapper);lambdaQueryWrapper.eq(User::getAge, 25).like(User::getName, John).orderByDesc(User::getCreateTime).page(new Page(pageNum, pageSize));ListUser userList lambdaQueryWrapper.list();return userList;}*///---------------------------增删改-查-------------------------------------------//加入了逻辑删除之后查询会自动增加 delfalg0;Testpublic void testSelectById() {System.out.println(----- selectById method test -----);User user userMapper.selectById(1L);Assertions.assertNotNull(user);System.out.println(user);}Testpublic void testInsert() {System.out.println(----- insert method test -----);User user new User();user.setName(John 雪花算法);user.setAge(25);user.setEmail(john.doeexample.com);int result userMapper.insert(user);Assertions.assertEquals(1, result);System.out.println(Inserted user ID: user.getId());}Testpublic void testUpdateById() {System.out.println(----- updateById method test -----);User user new User();user.setId(1L);user.setAge(0);//update注解优先自定义设值int result userMapper.updateById(user);Assertions.assertEquals(1, result);}//配置了全局逻辑删除 delfalg0;Testpublic void testDeleteById() {System.out.println(----- deleteById method test -----);int result userMapper.deleteById(5L);Assertions.assertEquals(1, result);int ruserMapper.deleteBatchIds(Arrays.asList(1L,2L,3L));}//-------------------------- 乐观锁 ---------------------------------/*乐观锁OptimisticLockerInnerInterceptor机制:当要更新一条记录的时候希望这条记录没有被别人更新乐观锁实现方式
取出记录时获取当前version
更新时带上这个version
执行更新时 set version newVersion where version oldVersion
如果version不对就更新失败*/Test//乐观锁测试public void testOptimisticLocker(){//1、查询用户信息User user userMapper.selectById(1L);//2、修改用户信息user.setEmail(123qq.com);user.setName(小垃圾);//3、更新操作userMapper.updateById(user); //WHERE id? AND version?}Testpublic void testOptimisticLocker2(){//模拟多线程User user userMapper.selectById(2L);user.setEmail(111jdwqq.com);user.setName(帅小伙111);//我们在这里对线程1修改值//线程2插队User user2 userMapper.selectById(2L);user2.setEmail(222jdwqq.com);user2.setName(帅小伙222);userMapper.updateById(user2); //线程2抢先提交userMapper.updateById(user);//线程1失败乐观锁在这种情况下防止了脏数据存在没有乐观锁就会有覆盖掉线程2的操作}}