mybatis-plus icon indicating copy to clipboard operation
mybatis-plus copied to clipboard

【优化建议】关于从Wrapper中分离Where条件的建议

Open feg545 opened this issue 1 year ago • 1 comments

当前使用版本(必填,否则不予处理)

3.5.2

背景/痛点

Wrapper太重了,而且无法限制调用方应该传入QueryWrapper还是UpdateWrapper。

需求

因为Wrapper本身的定位是用于java代码拼装select/update/delete类型的SQL语句,这三种语句有个共同的地方就是都可以包含where语句。

  • delete语句:只需要where条件

  • update语句:set子句+where

  • select语句:join + where + having + group by + order by

因此我认为可以封装一个where条件工具,使得接口定义像下面这样:

delete(Where where);
update(String column1, Object value1, Where where);
selectList(Where where);

这样看起来更加清楚明了。

期望

  • 提供一个封装where条件的工具。参考AbstractWrapper中where条件相关部分;
  • 最好是同时支持string版的column和lambda版的column
  • string版的column需要防止sql注入;
  • 还需要支持"a.xyz" 这样的列名称,用于join语句后的where条件;
  • 提供转字符串的方法,方便在XML中引用;

feg545 avatar Aug 25 '23 07:08 feg545

欢迎直接PR

huayanYu avatar Aug 31 '23 07:08 huayanYu