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

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
在这里插入图片描述

你可能感兴趣的:(mybatis,java,lambda)