Mybatis-Plus advanced query LambdaQueryWrapper

1. Explanation

LambdaQueryWrapper can use lambda expressions directly through entity class get() attributes, and QueryWrapper must be consistent with the table name in the database. Since the table name may be complicated, LambdaQueryWrapper will be much more convenient than QueryWrapper at this time

condition illustrate
eq equal to =
like LIKE '%value%'
notLike NOT LIKE '%value%'
likeLeft LIKE '%value'
likeRight LIKE 'value%'
isNull Field IS NULL
in field IN (value1, value2, ...)

2. Code example

1. Controller layer code

@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 layer code (need to inherit IService<ModelField>)

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

3. The impl layer code (need to inherit 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 layer code (no code required, just inherit from BaseMapper<ModelField>)

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

}

5. Entity class

@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;

}

3. postman test interface

 {

    "currentPage": 1,

    "pageSize": 5,

    "data": {

        "groupName": "",

        "name": "",

        "alisaName": ""

    }

}

currentPage: current page number

pageSize: number of entries per page

data{}: impl layer code requestBean.getData(); can get the parameters passed in. If no content is entered in the parameter in data, all database list information will be queried by default

Fourth, you can refer to the following link

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

http://t.csdn.cn/mdIKI

Guess you like

Origin blog.csdn.net/Jiang5106/article/details/130128468