-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Open
Description
确认
- 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
- 我已经在 issue 中搜索过, 确认问题没有被提出过
- 我已经修改标题, 将标题中的 描述 替换为你的想法(不得删除 描述 前面的部分)
功能改进
在dto中extends LambdaQueryWrapper,实现public String getSqlSegment()如下,即可直接将dto当作wrapper传入mapper进行查询。
希望固定一个方法比如getSqlSegment固定最先调用,或者提供一个单独的方法用于在参数收集完成后初始化wrapper
@EqualsAndHashCode(callSuper = true)
@Data
public class UserDto extends LambdaQueryWrapper<User> {
private Long id;
private String nameLike;
private Integer ageStart;
private Integer ageEnd;
private String email;
private LocalDateTime startCreateTime;
private LocalDateTime endCreateTime;
private List<Long> ids = new ArrayList<>();
public UserDto addId(Long id){
ids.add(id);
return this;
}
@Override
public String getSqlSegment() {
this.like(this.nameLike != null, User::getName, nameLike);
this.ge(this.ageStart != null, User::getAge, ageStart);
this.le(this.ageEnd != null, User::getAge, ageEnd);
this.like(this.email != null, User::getEmail, email);
this.ge(this.startCreateTime != null, User::getCreateTime, startCreateTime);
this.le(this.endCreateTime != null, User::getCreateTime, endCreateTime);
this.in(!this.ids.isEmpty(), User::getId, ids);
return super.getSqlSegment();
}
}
public List<User> getUsers(UserDto dto) {
return userMapper.selectList(dto);
}
@Mapper
public interface UserMapper extends BaseMapper<User>{
}
参考资料
No response
Metadata
Metadata
Assignees
Labels
No labels