您现在的位置是:主页 > news > 淄博网站建设公司/收录情况有几种
淄博网站建设公司/收录情况有几种
admin2025/6/29 21:42:50【news】
简介淄博网站建设公司,收录情况有几种,网站后台数据库备份怎么做,seo优化排名操作5.1 概述 我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器 Wrapper 。使用它可以让我们非常方便的构造条件。 其继承体系如下: 在其子类AbstractWrapper中提供了很多用于构造Where条件的方法。 AbstractWra…
5.1 概述
我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器 Wrapper
。使用它可以让我们非常方便的构造条件。
其继承体系如下:
在其子类AbstractWrapper
中提供了很多用于构造Where条件的方法。
AbstractWrapper
的子类QueryWrapper
则额外提供了用于针对Select语法的select
方法。可以用来设置查询哪些列。
AbstractWrapper
的子类UpdateWrapper
则额外提供了用于针对SET语法的set
方法。可以用来设置对哪些列进行更新。
完整的AbstractWrapper方法可以参照:https://baomidou.com/guide/wrapper.html#abstractwrapper
介绍是用来干什么的。它的实现类有哪些
QueryWrapper,UpdateWrapper,【LambdaQueryWrapper】
5.2 常用AbstractWrapper方法
eq:equals,等于
gt:greater than ,大于 >
ge:greater than or equals,大于等于≥
lt:less than,小于<
le:less than or equals,小于等于≤
between:相当于SQL中的BETWEEN
like:模糊匹配。like(“name”,“黄”),相当于SQL的name like ‘%黄%’
likeRight:模糊匹配右半边。likeRight(“name”,“黄”),相当于SQL的name like ‘黄%’
likeLeft:模糊匹配左半边。likeLeft(“name”,“黄”),相当于SQL的name like ‘%黄’
notLike:notLike(“name”,“黄”),相当于SQL的name not like ‘%黄%’
isNull
isNotNull
and:SQL连接符AND
or:SQL连接符ORin: in(“age",{1,2,3})相当于 age in(1,2,3)
groupBy: groupBy(“id”,“name”)相当于 group by id,name
orderByAsc :orderByAsc(“id”,“name”)相当于 order by id ASC,name ASC
orderByDesc :orderByDesc (“id”,“name”)相当于 order by id DESC,name DESC
示例一
SQL语句如下:
SELECT id,user_name,PASSWORD,NAME,age,address
FROM USER
WHERE age > 18 AND address = '狐山'
如果用Wrapper写法如下:
@Testpublic void testWrapper01(){QueryWrapper wrapper = new QueryWrapper();wrapper.gt("age",18);wrapper.eq("address","狐山");List<User> users = userMapper.selectList(wrapper);System.out.println(users);}
示例二
SQL语句如下:
SELECT id,user_name,PASSWORD,NAME,age,address
FROM USER
WHERE id IN(1,2,3) AND age BETWEEN 12 AND 29 AND address LIKE '%山%'
如果用Wrapper写法如下:
@Testpublic void testWrapper02(){QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.in("id",1,2,3);wrapper.between("age",12,29);wrapper.like("address","山");List<User> users = userMapper.selectList(wrapper);System.out.println(users);}
示例三
SQL语句如下:
SELECT id,user_name,PASSWORD,NAME,age,address
FROM USER
WHERE id IN(1,2,3) AND age > 10
ORDER BY age DESC
如果用Wrapper写法如下:
@Testpublic void testWrapper03(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.in("id",1,2,3);queryWrapper.gt("age",10);queryWrapper.orderByDesc("age");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}
5.3 常用QueryWrapper方法
QueryWrapper的 select 可以设置要查询的列。
示例一
select(String… sqlSelect) 方法的测试为要查询的列名
SQL语句如下:
SELECT id,user_name
FROM USER
MP写法如下:
@Testpublic void testSelect01(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("id","user_name");List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}
示例二
select(Class entityClass, Predicate predicate)
方法的第一个参数为实体类的字节码对象,第二个参数为Predicate类型,可以使用lambda的写法,过滤要查询的字段 (主键除外) 。
SQL语句如下:
SELECT id,user_name
FROM USER
MP写法如下:
@Testpublic void testSelect02(){QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select(User.class, new Predicate<TableFieldInfo>() {@Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return "user_name".equals(tableFieldInfo.getColumn());}});List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}
示例三
select(Predicate predicate)
方法第一个参数为Predicate类型,可以使用lambda的写法,过滤要查询的字段 (主键除外) 。
SQL语句如下:
SELECT id,user_name,PASSWORD,NAME,age
FROM USER
就是不想查询address这列,其他列都查询了
MP写法如下:
@Testpublic void testSelect03(){QueryWrapper<User> queryWrapper = new QueryWrapper<>(new User());queryWrapper.select(new Predicate<TableFieldInfo>() {@Overridepublic boolean test(TableFieldInfo tableFieldInfo) {return !"address".equals(tableFieldInfo.getColumn());}});List<User> users = userMapper.selectList(queryWrapper);System.out.println(users);}
5.4 常用UpdateWrapper方法
我们前面在使用update方法时需要创建一个实体类对象传入,用来指定要更新的列及对应的值。但是如果需要更新的列比较少时,创建这么一个对象显的有点麻烦和复杂。
我们可以使用UpdateWrapper的set方法来设置要更新的列及其值。同时这种方式也可以使用Wrapper去指定更复杂的更新条件。
示例
SQL语句如下:
UPDATE USER
SET age = 99
where id > 1
我们想把id大于1的用户的年龄修改为99,则可以使用如下写法:
@Testpublic void testUpdateWrapper(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.gt("id",1);updateWrapper.set("age",99);userMapper.update(null,updateWrapper);}
5.5 Lambda条件构造器
我们前面在使用条件构造器时列名都是用字符串的形式去指定。这种方式无法在编译期确定列名的合法性。
所以MP提供了一个Lambda条件构造器可以让我们直接以实体类的方法引用的形式来指定列名。这样就可以弥补上述缺陷。
示例
要执行的查询对应的SQL如下
SELECT id,user_name,PASSWORD,NAME,age,address
FROM USER
WHERE age > 18 AND address = '狐山'
如果使用之前的条件构造器写法如下
@Testpublic void testLambdaWrapper(){QueryWrapper<User> queryWrapper = new QueryWrapper();queryWrapper.gt("age",18);queryWrapper.eq("address","狐山");List<User> users = userMapper.selectList(queryWrapper);}
如果使用Lambda条件构造器写法如下
@Testpublic void testLambdaWrapper2(){LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.gt(User::getAge,18);queryWrapper.eq(User::getAddress,"狐山");List<User> users = userMapper.selectList(queryWrapper);}