Mybatis-Plus高级查询LambdaQueryWrapper

一 、解释

LambdaQueryWrapper使用lambda表达式可以直接通过实体类get()属性,而QueryWrapper必须要与数据库的中表名一致,由于表名可能会很复杂,这时候相较而言LambdaQueryWrapper会比QueryWrapper便捷不少

条件 说明
eq 等于 =
like LIKE ‘%值%’
notLike NOT LIKE ‘%值%’
likeLeft LIKE ‘%值’
likeRight LIKE ‘值%’
isNull 字段 IS NULL
in 字段 IN (value1, value2, …)

二、代码举例

1、controller层代码

@RestController
@RequestMapping("/queryDetail")
@Api(tags = "~~~接口")
public class QueryDetailController {
    @Autowired
    private QueryDetailService queryDetailService;

    @ApiOperation("根据条件查询全部字段列表")
    @PostMapping("/page")
    @DisableEncryptResponse
    public R<Object> getAllField(@RequestBody RequestBean<ModelField> requestBean) {
        return queryDetailService.getListByPage(requestBean);
    }
}

2、service层代码(需继承IService<ModelField>)

@Transactional
public interface QueryDetailService extends IService<ModelField> {
    R<Object> getListByPage(RequestBean<ModelField> requestBean);
}

3、impl层代码(需继承ServiceImpl<QueryDetailMapper, ModelField>)

@Slf4j
@Service
public class QueryDetailServiceImpl extends ServiceImpl<QueryDetailMapper, ModelField> implements QueryDetailService {
    @Autowired
    private QueryDetailMapper queryDetailMapper;

    //分页 根据条件查询全部字段列表
    @Override
    public R<Object> getListByPage(RequestBean<ModelField> requestBean) {
        ModelField modelField = requestBean.getData();

        LambdaQueryWrapper<ModelField> lambdaQuery = new LambdaQueryWrapper<>();
        if (!ToolUtil.isEmpty(modelField.getGroupName())) {
            lambdaQuery.eq(ModelField::getGroupName, modelField.getGroupName());
        }
        if (!ToolUtil.isEmpty(modelField.getName())) {
            lambdaQuery.like(ModelField::getName, modelField.getName());
        }
        if (!ToolUtil.isEmpty(modelField.getAlisaName())) {
            lambdaQuery.like(ModelField::getAlisaName, modelField.getAlisaName());
        }

        return R.ok(page(new Page<>(requestBean.getCurrentPage(), requestBean.getPageSize()), lambdaQuery));
    }
}

4、mapper层代码(无需代码,只需继承BaseMapper<ModelField>)

@Mapper
@Repository
public interface QueryDetailMapper extends BaseMapper<ModelField> {

}

5、实体类

@ApiModel(description = "") //对实体类作用解释
@TableName(value = "")      //表名字
public class ModelField {

    @ApiModelProperty("主键")
    @TableId("f_id")
    private Long id;

    @ApiModelProperty("字段名称")
    @TableField("f_name")
    private String name;

    @ApiModelProperty("字段别名")
    @TableField("f_alisaName")
    private String alisaName;

    @ApiModelProperty("字段组名称")
    @TableField("f_groupName")
    private String groupName;

    @ApiModelProperty("字段类型")
    @TableField("f_type")
    private Integer type;

    @ApiModelProperty("字段长度")
    @TableField("f_length")
    private Integer length;

}

三、postman测试接口

 {

    "currentPage": 1,

    "pageSize": 5,

    "data": {

        "groupName": "",

        "name": "",

        "alisaName": ""

    }

}

currentPage:当前页码

pageSize:每页条数

data{}:impl层代码requestBean.getData();可获取里面传入的参数。若data里面参数不输入内容,则默认查询所有数据库列表信息

四、可参考如下链接

http://t.csdn.cn/64Bwq

http://t.csdn.cn/mdIKI

猜你喜欢

转载自blog.csdn.net/Jiang5106/article/details/130128468