我们提供安全,免费的手游软件下载!
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
核心功能的发展 :
eq
(等于)、
ne
(不等于)、
gt
(大于)、
lt
(小于)等。
链式调用的优化 :
Lambda表达式的引入 :
LambdaQueryWrapper
和
LambdaUpdateWrapper
,这使得开发者可以使用更加现代的编程方式来构建查询和更新条件,提高了代码的可读性和安全性。
功能扩展 :
eqSql
、
gtSql
、
geSql
、
ltSql
、
leSql
等,这些方法允许开发者直接在条件构造器中嵌入SQL片段,提供了更高的灵活性。
性能优化 :
易用性的提升 :
groupBy
、
orderBy
、
having
等,使得开发者可以更加方便地构建复杂的查询条件。
MyBatis-Plus的条件构造器具有以下特点:
and
和
or
。
nested
和
apply
方法,可以构建更复杂的查询条件。
MyBatis-Plus 提供了多种条件构造器,以满足不同的查询需求:
条件构造器允许开发者以链式调用的方式构造SQL的WHERE子句,提供了极大的灵活性和便利性。例如,使用QueryWrapper可以这样构建查询条件:
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Kimi").lt("age", 30);
这将生成SQL:
SELECT * FROM user WHERE name = 'Kimi' AND age < 30
。
// 创建 QueryWrapper 对象
QueryWrapper queryWrapper = new QueryWrapper<>();
// 添加查询条件
queryWrapper.eq("name", "张三") // 字段等于某个值
.gt("age", 18) // 字段大于某个值
.like("email", "%@gmail.com"); // 字段包含某个值
// 使用条件进行查询
List users = userMapper.selectList(queryWrapper);
// 创建 UpdateWrapper 对象
UpdateWrapper updateWrapper = new UpdateWrapper<>();
// 设置更新条件
updateWrapper.eq("id", 1); // 更新 id=1 的记录
// 设置要更新的数据
User user = new User();
user.setName("李四");
user.setAge(20);
// 执行更新操作
int result = userMapper.update(user, updateWrapper);
// 创建 LambdaQueryWrapper 对象
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
// 添加查询条件
lambdaQueryWrapper.eq(User::getName, "张三")
.gt(User::getAge, 18)
.like(User::getEmail, "%@gmail.com");
// 使用条件进行查询
List users = userMapper.selectList(lambdaQueryWrapper);
在 MyBatis-Plus 中,Wrapper 类是构建查询和更新条件的核心工具。
MyBatis-Plus的Wrapper类提供了一系列方法来构建复杂的数据库查询条件。以下是一些常用的Wrapper类方法汇总:
基本条件方法 :
eq
:等于条件,例如
wrapper.eq("name", "zhangsan")
。
ne
:不等于条件,例如
wrapper.ne("name", "
zhangsan
")
。
gt
:大于条件,例如
wrapper.gt("age", 18)
。
lt
:小于条件,例如
wrapper.lt("age", 18)
。
ge
:大于等于条件,例如
wrapper.ge("age", 18)
。
le
:小于等于条件,例如
wrapper.le("age", 18)
。
between
:介于两个值之间,例如
wrapper.between("age", 18, 30)
。
notBetween
:不介于两个值之间,例如
wrapper.notBetween("age", 18, 30)
。
like
:模糊匹配,例如
wrapper.like("name", "%zhangsan%")
。
notLike
:不模糊匹配,例如
wrapper.notLike("name", "%zhangsan%")
。
likeLeft
:左模糊匹配,例如
wrapper.likeLeft("name", "zhangsan%")
。
likeRight
:右模糊匹配,例如
wrapper.likeRight("name", "%zhangsan")
。
isNull
:字段值为null,例如
wrapper.isNull("name")
。
isNotNull
:字段值不为null,例如
wrapper.isNotNull("name")
。
in
:字段值在指定集合中,例如
wrapper.in("name", "zhangsan", "Tom")
。
notIn
:字段值不在指定集合中,例如
wrapper.notIn("name", "zhangsan", "Tom")
。
逻辑组合方法 :
and
:添加一个AND条件,例如
wrapper.and(wq -> wq.eq("name", "zhangsan"))
。
or
:添加一个OR条件,例如
wrapper.or(wq -> wq.eq("name", "zhangsan"))
。
SQL片段方法 :
apply
:添加自定义SQL片段,例如
wrapper.apply("name = {0}", "zhangsan")
。
last
:添加自定义SQL片段到末尾,例如
wrapper.last("order by name")
。
子查询方法 :
inSql
:子查询IN条件,例如
wrapper.inSql("name", "select name from user where age > 21")
。
notInSql
:子查询NOT IN条件,例如
wrapper.notInSql("name", "select name from user where age > 21")
。
分组与排序方法 :
groupBy
:分组,例如
wrapper.groupBy("name")
。
orderByAsc
:升序排序,例如
wrapper.orderByAsc("age")
。
orderByDesc
:降序排序,例如
wrapper.orderByDesc("age")
。
其他方法 :
exists
:存在条件,例如
wrapper.exists("select * from user where name = {0}", "zhangsan")
。
notExists
:不存在条件,例如
wrapper.notExists("select * from user where name = {0}", "zhangsan")
。
set
:更新操作时设置字段值,例如
updateWrapper.set("name", "zhangsan")
。
having(String column, Object val): HAVING 过滤条件,用于聚合后的过滤,例如
queryWrapper.select("name", "age")
.groupBy("age")
.having("count(id) > 1");
以上方法提供了构建查询和更新条件的灵活性和强大功能,使得MyBatis-Plus在数据库操作方面更加高效和安全。
热门资讯