官网:http://mp.baomidou.com/guide/
条件
wrapper.between(column, val1, val2)
wrapper.groupBy(columns) //对应sql中分组
wrapper.eq(column, params) //相当于where条件
wrapper.in(column, value) //sql中in
wrapper.notIn(column, value) //sql中 not in
wrapper.orderBy(columns, isAsc) //排序
wrapper.exists(value) //相对于sql中exists查询
wrapper.notExists(value) //相当于sql中not exists查询
wrapper.notBetween(column, val1, val2) //相当于sql中在某个范围内使用的between
wrapper.ge(column, params) //大于等于
wrapper.le(column, params) //小于等于
wrapper.like(column, value) //模糊查询
wrapper.having(sqlHaving, params) //条件
查询
List<UserEntity> list = ud.selectByMap(columnMap) //通过map查询 适用场景是分页查询
List<UserEntity> list2 = ud.selectList(wrapper); //如果为Null,默认查询所有
List<UserEntity> list3 = ud.selectCount(wrapper)//通过EntityWrapper根据某个字段获取总数
List<UserEntity> list4 = ud.selectMaps(wrapper) //EntityWrapper查询
List<UserEntity> list5 = ud.selectPage(rowBounds, wrapper) //rowBounds里面封装了起止和长度,wrapper具体
增删改
ud.insert(entity) //应用场景是指定你需要的实体增加到对应的表中
ud.delete(wrapper) //通过EntityWrapper指定字段删除数据
ud.deleteById(id) //主键删除
ud.deleteByMap(columnMap) //通过map删除
ud.deleteBatchIds(idList) //批量删除
ud.insertAllColumn(entity) //默认插入该实体所有字段
ud.insertUserEntity(map) //通过map新增数据
ud.update(entity, wrapper) //通过EntityWrapper更新实体
ud.updateAllColumnById(entity) //更新所有实体,通过主键更新
ud.updateById(entity) //更新指定实体,通过主键更新
ud.updateUserMap(map) //通过map
条件构造器
AbstractWrapper条件参数
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
查询方式 | 说明 |
---|---|
where | WHERE 语句,拼接 + WHERE 条件 |
and | AND 语句,拼接 + AND 字段=值 |
or | OR 语句,拼接 + OR 字段=值 !!!主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接) |
eq | 等于= |
allEq | 基于 map 内容等于= |
ne | 不等于<> |
gt | 大于> |
ge | 大于等于>= |
lt | 小于< |
le | 小于等于<= |
like | 模糊查询 LIKE |
likeLeft | LIKE ‘%值’ |
likeRight | LIKE ‘值%’ |
notLike | 模糊查询 NOT LIKE |
in | IN (v0, v1, …) |
notIn | NOT IN (v0, v1, …) |
inSql | IN ( sql语句 ) |
notInSql | 字段 NOT IN ( sql语句 ) |
isNull | NULL 值查询 |
isNotNull | IS NOT NULL |
groupBy | GROUP BY 字段, … |
having | HAVING ( sql语句 ) |
orderBy | ORDER BY 字段, … |
orderByAsc | ORDER BY 字段, … ASC |
orderByDesc | ORDER BY 字段, … DESC |
exists | EXISTS 条件语句 |
notExists | NOT EXISTS 条件语句 |
between | BETWEEN 条件语句 |
notBetween | NOT BETWEEN 条件语句 |
addFilter | 自由拼接 SQL |
last | 无视优化规则直接拼接到 sql 的最后 !!!只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用 |
apply | 拼接SQL |
QueryWrapper条件
说明:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取
查询方式 | 说明 |
---|---|
select | 设置查询字段 |
UpdateWrapper条件
说明:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!
查询方式 | 说明 |
---|---|
set | SQL SET 字段 |
setSql | 设置 SET 部分 SQL |
分页
if (search != null && search.size() > 0) {
for (String key : search.keySet()) {
String value = search.get(key);
queryWrapper.like(key, value);
}
}
IPage<PartsSpu> iPage = partsSpuMapper.selectPage(new Page<PartsSpu>(page, limit), queryWrapper);
List<PartsSpu> records = iPage.getRecords();
return this.getIPageApiResult(iPage, records);
简单的模糊查询
// 对应SQL: SELECT * FROM SYS_USER WHERE USERNAME LIKE '%O%'
public List<SysUser> QueryWrapper(String column, String value) {
Wrapper<SysUser> userWrapper = new QueryWrapper<SysUser>();
QueryWrapper<SysUser> like = ((QueryWrapper<SysUser>) userWrapper).like("username", "o");
return userMapper.selectList(like);
};
多条件拼接
//对应sql:select username from sys_user where id > 1
public List<SysUser> query(){
return userMapper.selectList(
new QueryWrapper<SysUser>()
.select("username")
.gt("id",1)
);
}