MyBatis-Plus AbstractWrapper条件构造器

条件构造器AbstractWrapper是QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

List<User> users = userDao.selectList(new QueryWrapper<User>().eq("real_name","王昭君"));
        
log.info("----------user:{}", users);

AbstractWrapper下的方法及使用

方法名 说明 使用
allEq(Map<R, V> params) 全部=(或个别isNull) allEq(params,true)
eq = eq(“real_name”,“王昭君”)
ne <> ne(“nick_name”,“空想4”)
gt > gt(“age”,21)
ge >= ge(“age”,22)
lt < lt(“age”,22)
le <= le(“age”,21")
between cloum between ? and ? between(“age”,0,21)
notBetween cloum between ? and ? notBetween(“age”,0,21)
like cloum like ‘%王%’ like(“real_name”,“王”)
notLike not like ‘%王%’ notLike(“real_name”,“王”)
likeLeft like ‘%王’ likeLeft(“real_name”,“昭”)
likeRight like ‘王%’ likeRight(“real_name”,“昭”)
isNull is null isNull(“gender”)
isNotNull is not null isNotNull(“gender”)
in in (1,2,3) in(“nick_name”,lists)
notIn age not in (1,2,3) notIn(“nick_name”,lists)
inSql age in (1,2,3,4,5,6) inSql(“nick_name”,"‘空想4’,‘空想5’,‘空想6’")
notInSql age not in (1,2,3,4,5,6) notInSql(“nick_name”,"‘空想4’,‘空想5’,‘空想6’")
groupBy group by id,name groupBy(“nick_name”,“age”)
orderByAsc order by id ASC,name ASC orderByAsc(“nick_name”,“age”)
orderByDesc order by id DESC,name DESC orderByDesc(“age”)
orderBy order by id ASC,name ASC orderBy(true,true,“age”)
having having sum(age) > 10 having(“sum(age) > 10”)
or id = 1 or name = ‘老王’ eq(“nick_name”,“空想4”).or(i->i.eq(“age”,21) eq(“nick_name”,“空想4”).or().eq(“nick_name”,“空想5”)
and and (name = ‘李白’ and status <> ‘活着’) and(i->i.eq(“age”,21))
nested (name = ‘李白’ and status <> ‘活着’) nested(i->i.eq(“age”,21).eq(“nick_name”,“空想4”))
apply id = 1 apply(“nick_name = ‘空想4’”)
last 最后添加多个以最后的为准,有sql注入风险 last(“limit 1”)
exists 拼接 EXISTS ( sql语句 ) exists(“select id from table where age = 1”)
notExists 拼接 NOT EXISTS ( sql语句 ) notExists(“select id from table where age = 1”)

QueryWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

方法名 说明 使用
select select(i -> i.getProperty().startsWith(“test”)) select(“id”, “name”, “age”)

UpdateWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

方法名 说明 使用
set set(“name”, “老李头”) set(“name”, “”)
setSql setSql(“name = ‘老李头’”) setSql(String sql)

自定义SQL使用Wrapper

方案一 注解方式 Mapper.java

@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);

方案二 XML形式 Mapper.xml

<select id="getAll" resultType="MysqlData">
	SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>
发布了29 篇原创文章 · 获赞 0 · 访问量 374

猜你喜欢

转载自blog.csdn.net/qq_43399077/article/details/104061760