This commit is contained in:
admin 2021-02-22 16:34:25 +08:00
parent 81cea3a5b2
commit c124ac63c9
2 changed files with 49 additions and 3 deletions

View File

@ -25,6 +25,10 @@ public class AliasQueryWrapper<T> extends QueryWrapper<T> {
*/
@Override
protected String columnToString(String column) {
return StringUtils.isBlank(alias) ? column : (alias + StringPool.DOT + column);
if (column.lastIndexOf(StringPool.DOT) < 0) {
return StringUtils.isBlank(alias) ? column : (alias + StringPool.DOT + column);
} else {
return column;
}
}
}

View File

@ -79,4 +79,46 @@ QueryWrapper.eq("u.id", 1);
AliasQueryWrapper别名一次设置全局通用,不需要每个字段都加别名
说明:
对于非主表字段查询也是支持的
```java
class MpJoinTest {
@Resource
private UserMapper userMapper;
@Test
void test() {
UserDTO userDTO = userMapper.userLeftJoin(new AliasQueryWrapper<>()
.setAlias("u")
.eq("id", "1")
.like("sex", "3")
.eq("ua.tel", "10086") //如果查询字段中有点(.)则不会添加别名
.like("ua.address", "北京"));
}
}
```
对应sql:
```
select
u.*,
ua.tel
from user u
left join user_address ua on u.id = ua.user_id
WHERE (
u.id = ?
AND u.sex LIKE ?
AND ua.tel = ?
AND ua.address LIKE ?)
```
注意:如果你喜欢骚操作,请使用原生QueryWrapper
举例:
* .eq("(select sex from user where id = u.id)", "男")
* .eq("count(u.id)", 1)
不建议在QueryWrapper中使用sql或函数
除非你不考虑后续的维护和sql调优
QQ群:1022221898