一 、解释
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里面参数不输入内容,则默认查询所有数据库列表信息
四、可参考如下链接