Skip to content

[功能改进]: 希望能固定Querywrapper等的调用顺序 #6957

@banlijam

Description

@banlijam

确认

  • 我的版本是最新版本, 我的版本号与 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions