Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[功能改进]: 建议优化Wrapper<T> #6525

Open
3 tasks done
missfmaster opened this issue Oct 3, 2024 · 2 comments
Open
3 tasks done

[功能改进]: 建议优化Wrapper<T> #6525

missfmaster opened this issue Oct 3, 2024 · 2 comments

Comments

@missfmaster
Copy link

missfmaster commented Oct 3, 2024

确认

  • 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
  • 我已经在 issue 中搜索过, 确认问题没有被提出过
  • 我已经修改标题, 将标题中的 描述 替换为遇到的问题

功能改进

// 假设有一个 QueryWrapper 对象,设置删除条件为 name = 'John Doe'
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "John Doe");
boolean result = userService.remove(queryWrapper); // 调用 remove 方法

以上代码在修改name字段名或者删除name字段时,IDE均不会给出提示,容易产生问题,建议参照官网Mybatis生成方式,生成各模型类的Wrapper,内容如下:
比如当前模型类:

public class User {
   private long id;
   private String name;
   ...
}

需要生成的对应的Wrapper类:

public class UserWrapper {

   private QueryWrapper<User> wrapper;

   public UserWrapper nameEq(String name) {
        wrapper.eq("name", name);
        return this;
   }

   // ... name字段的其他比较、like等方法
   // ... 其他字段的方法...

}

这样,在调用时,可以向下边一样:

UserWrapper queryWrapper = new UserWrapper();
queryWrapper.nameEq("John Doe");
boolean result = userService.remove(queryWrapper); // 调用 remove 方法

起到的效果是:当name字段修改或者删除后,可以在编译级别即IDE中很容易看到错误。
望采纳!

参考资料

No response

@ruanych
Copy link

ruanych commented Oct 5, 2024

可以用 LambdaQueryWrapper

@totoro52
Copy link

totoro52 commented Oct 7, 2024

LambdaQueryWrapper不就满足你需要了。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants