mybatis-plus 与Lambda表达式常用方法

本文详细介绍了MyBatis-Plus中Lambda表达式的使用方法,包括基本查询、更新操作、复杂条件查询及分页功能。同时,还展示了如何通过Lambda实现多表查询,并提供了实用代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis-plus 与Lambda表达式常用方法

常用的lambda表达式主要为 LambdaQueryWrapper与LambdaUpdateWrapper
废话不多说直接上代码:

1. 常用基本方法

//根据user的orgCode进行查询
List<SalUser> salPosSalYyyymms = salUserService.list
(new LambdaQueryWrapper<SalUser>()
        .eq(SalUser::getOrgCode,orgCode));
 //根据user的主键查询,注意service使用的是getOne而不是list
 List<SalUser> salPosSalYyyymms = salUserService.getOne
(new LambdaQueryWrapper<SalUser>()
        .eq(SalUser::getUserId,userId));
 //根据user的主键更改orgCode
  List<SalUser> salPosSalYyyymms = salUserService.update
(new LambdaUpdateWrapper<SalUser>()
        .eq(SalUser::getUserId,userId).set(SalUser::getOrgCode,orgCode));
 //多重判断条件查询,如果用户名不为空,则根据用户名以及orgCode两个调件进行查询
 LambdaQueryWrapper<SalUser> queryWrapper = new LambdaQueryWrapper<SalUser>();
 if(userName.isEmpty()){
	queryWrapper.eq(SalUser::getUseName,userName)
}
queryWrapper.eq(SalUser::getOrgCode,orgCode);
List<SalUser> salPosSalYyyymms = salUserService.list(queryWrapper);

2. mybatis-plus 分页

创建MybatisPlusConfig

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
//         paginationInterceptor.setLimit(2);
        // 开启 count 的 join 优化,只针对部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }
}

查询方法

//page一定要在第一位,其次是条件
IPage<SalUser> page = new Page<>(pageNum,pageSize);
IPage<SalUser> pageUser = salUserService.page(page, new LambdaQueryWrapper<SalUser>()
        .eq(SalUser::getOrgCode,orgCode))

3. 多表查询添加sql语句使用Lambda

使用的是@Select()方式
sql语句需要加入${ew.customSqlSegment} 固定格式

User:

//entity实体类需要继承Model,@Data是lombok代码简化
@Data
public class User extends Model<User> {
	privite String orgName;
	privite String orgId;
	privite String orgCode;
	privite String userId;
	privite String userCode;
	privite String userName;
}

Mapper:

//${ew.customSqlSegment} 前不添加where 
/**
 * ${ew.customSqlSegment} 前不添加where 
 * page写在第一位
 * 如果报错未指定字段,则需要嵌套select
 * select * from (select so.org_name,so.org_id,sa.*  FROM sal_org so LEFT JOIN sal_user sa ON so.org_code = sa.org_code )s ${ew.customSqlSegment}
 */
 @Select("SELECT so.org_name,so.org_id,sa.*  FROM sal_org so LEFT JOIN sal_user sa " 
	 + "ON so.org_code = sa.org_code  ${ew.customSqlSegment}")
    IPage<User > selectPlu(IPage<User > salUser,
        @Param(Constants.WRAPPER) LambdaQueryWrapper<User> wrapper);

Service

//以salUser类为主分页
IPage<User> page = new Page<>(pageNum,pageSize);
IPage<User> pageUser = salUserMapper.selectPlu(page,
 new LambdaQueryWrapper<SalUser>()
        .eq(SalUser::getOrgCode,orgCode));

最后LambdaQueryWrapper常用的方法
方法图片来源: https://www.cnblogs.com/javagg/p/12654305.html
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vace cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值