• 首页

  • 归档

  • 标签

  • 分类

  • 友链
M S B l o g
M S B l o g

ms

获取中...

06
18
java
总结
MyBatis-Plus

MyBatis-plus条件构造器Warpper

发表于 2021-06-18 • java 总结 框架 • 被 2,196 人看爆

MyBatis-plus提供的通用Mapper中,删改查(没有insert)的方法通常会需要我们传入一个条件构造器,用来生成最后执行的SQL语句

image.png

  • Wrapper : 条件构造父类。
  • AbstractWrapper :QueryWrapper(LambdaQueryWrapper)和UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。
  • AbstractLambdaWrapper :Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
  • LambdaQueryWrapper :Lambda形式的查询Wrapper。
  • LambdaUpdateWrapper :Lambda 形式的更新Wrapper。
  • QueryWrapper :继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
    及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取。
  • UpdateWrapper : 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
    及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取。

常用sql拼接方法

image.png

QueryWrapper(查询条件构造器)

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

示例

//查询第一条纪律
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
User user = mapper.selectOne(queryWrapper);

//查询总记录数
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
Integer count = mapper.selectCount(queryWrapper);

//查询所有记录:返回实体列表 List<user>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectList(queryWrapper );

//查询所有记录:返回map列表 List<Map<String,Object>>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectMaps(queryWrapper);

//查询所有记录并翻页:返回Ipage<entity>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<User> userIPage = mapper.selectPage(page, queryWrapper);

//查询所有记录并翻页:返回Ipage<Map<String, Object>>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper);

//查询所有记录:lambda
LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User>lambdaQuery();
lambdaQuery.likeRight(User::getName,"杨")
	.and(lqw->lqw.lt(User::getAge,40).or().isNostNull(User::getEmail));
List<User> userList=userMapper.selectList(lambdaQuery);
userList.forEach(System.out::println)

//查询所有记录:chain
List<User> userList=new LambdaQueryChainWrapper<User>(userMapper)
	.like(User::getName,"杨").ge(User::getAge,20).list();

UpdateWrapper(更新条件构造器)

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

示例

//形式一:wrapper
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>();
updateWrapper.eq("id",1);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);

//形式二:whereWrapper
User whereUser=new User();
whereUser.setId(1);
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>(whereUser);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);

//形式三:lambda
LambdaUpdateWrapper<User> lambdaUpdateWrapper=Wrappers.<User>lambdaUpdate();
lambdaUpdateWrapper.eq(User::getId,1).set(User::getName,"张三");
int result=baseMapper.update(null,lambdaUpdateWrapper);

//形式四:链式
boolean update=new LambdaUpdateChainWrapper<User>(userMapper)
	.eq(User::getId,1).set(User::getName,"张三").update();

使用 Wrapper 自定义SQL

需要mybatis-plus版本 >= 3.0.7 param 参数名要么叫ew,要么加上注解@Param(Constants.WRAPPER) 使用$ 不支持 Wrapper 内的entity生成where语句

用注解

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

用XML

List<MysqlData> getAll(Wrapper ew);
<select id="getAll" resultType="MysqlData">
	SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>
分享到:
MyBatis-Plus分页查询
MyBatis-Plus逻辑删除
  • 文章目录
  • 站点概览
ms

MSms

⚓️HelloWorld⚓️

QQ Email RSS
看爆 Top5
  • MyBatis-Plus分页查询 5,936次看爆
  • @Autowired与@Resource的区别 4,755次看爆
  • feign远程调用及异步调用丢失请求头问题 4,526次看爆
  • spring cloud中OpenFeign整合Sentinel启动报错 4,423次看爆
  • Certbot查看证书过期时间,手动续期以及自动续期 3,302次看爆

Copyright © 2025 ms · 湘ICP备20015239号

Proudly published with Halo · Theme by fyang · 站点地图