mybatisplus-LambdaQueryWrapper使用

MyBatis-Plus 条件构造器(Wrapper) - 简书 (jianshu.com)

mybatis-plus update 更新操作_ChengLc1612的博客-CSDN博客

Mybatis-Plus(mbp) 提供 Wrapper 极大的减少大家的写SQL 的时间,Wrapper 类封装了大量的逻辑方法 eq , gt , lt等,使得操作数据库的代码进一步简洁。

更新

在代码中有更新数据的需求,发现 mbp 提供了 UpdateWrapper 类简化更新的操作。

继承自 BaseMapper 的自定以mapper的 update() 有这两个参数

/**
     * 根据 whereEntity 条件,更新记录
     *
     * @param entity        实体对象 (set 条件值,可以为 null)
     * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
     */
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);

实体对象可以为null且为set条件值,说明有两种方法可以实现更新。

第一种:

将需要更新的字段,设置到entity 中

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","shimin");
 
User user = new User();
user.setAge(18);
 
Integer rows = userMapper.update(user, updateWrapper);

第二种:

可以将entity设置为 null ,将需要更新的字段设置到 UpdateWrapper 中

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("id","123")eq("name","shimin");
 
Integer rows = userMapper.update(null, updateWrapper);

分页

在之前都是通过使用原生sql来完成分页的功能,需编写大量繁杂,重复且不能保证字段拼写正确的字段。其实 MyBatisPlus 已经很好的封装了分页的基本功能。

/**
     * 分页
     *
     * @param req
     * @return
     */
    public ResponseInfo<List<Resp>> page(Req req) {

        //组装lambdaquery参数
        LambdaQueryWrapper<PartBase> query = new LambdaQueryWrapper<PartBase>()
            	//先判断字段是否为空
                .like(StringUtils.hasText(req.getBaseErpCode()), PartBase::getBaseErpCode, req.getBaseErpCode())
                .eq(Objects.nonNull(req.getEnabled()), PartBase::getEnabled, req.getEnabled());

        //使用MyBatisPlus分页功能
        Page<PartBase> page = partBaseService.page(new Page<>(req.getPageNum(), req.getPageSize()), query);
        //...
        return responseInfo;
    }

LambdaQueryWrapper的like方法会有判断字段是否为空,然后再执行后面的查询条件,类似于xml中的

<if test="req.planNo != null and req.planNo != '' ">
    AND t.plan_no = #{req.planNo}
</if>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值