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