mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
update
This commit is contained in:
parent
1fe9ffb80c
commit
3fa79af96b
29
README.md
29
README.md
@ -52,11 +52,18 @@ MyBaseService 继承了IService,同样添加以上方法
|
||||
|
||||
MyBaseServiceImpl 继承了ServiceImpl,同样添加了以上方法
|
||||
|
||||
## 核心类 MyLambdaQuery 和 MyLambdaQueryWrapper
|
||||
## 核心类 MyQueryWrapper, MyLambdaQueryWrapper和MyJoinLambdaQueryWrapper
|
||||
|
||||
[->区别](https://gitee.com/best_handsome/mybatis-plus-join/wikis/%E8%AF%B4%E6%98%8E)
|
||||
|
||||
## MyLambdaQuery用法
|
||||
## MyQueryWrapper和MyLambdaQueryWrapper
|
||||
|
||||
MyQueryWrapper相当于mp的QueryWrapper
|
||||
MyLambdaQueryWrapper相当于mp的LambdaQueryWrapper
|
||||
|
||||
两者可以无缝切换
|
||||
MyQueryWrapper.lambda() -> MyLambdaQueryWrapper
|
||||
MyLambdaQueryWrapper.stringQuery() -> MyQueryWrapper
|
||||
|
||||
### 简单的3表查询
|
||||
|
||||
@ -67,7 +74,7 @@ class test {
|
||||
|
||||
void testJoin() {
|
||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||
new MyLambdaQuery<UserDO>()
|
||||
new MyLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select("addr.tel", "addr.address", "a.province")
|
||||
.leftJoin("user_address addr on t.id = addr.user_id")
|
||||
@ -121,7 +128,7 @@ class test {
|
||||
|
||||
void testJoin() {
|
||||
IPage<UserDTO> page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class,
|
||||
new MyLambdaQuery<UserDO>()
|
||||
new MyLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select("addr.tel", "addr.address")
|
||||
.select("a.province")
|
||||
@ -155,7 +162,7 @@ class test {
|
||||
|
||||
void testJoin() {
|
||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||
new MyLambdaQuery<UserDO>()
|
||||
new MyLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select("addr.tel", "addr.address")
|
||||
//行列转换
|
||||
@ -198,9 +205,13 @@ ORDER BY
|
||||
addr.id DESC
|
||||
```
|
||||
|
||||
## MyLambdaQueryWrapper用法
|
||||
## MyJoinLambdaQueryWrapper用法
|
||||
|
||||
#### MyLambdaQueryWrapper更符合面向对象(OOP),没有魔术值,全部基于lambda,但灵活性不如上面的
|
||||
MyJoinLambdaQueryWrapper与MyLambdaQueryWrapper不同,是一套新的支持多表的wrapper
|
||||
MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
|
||||
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
|
||||
|
||||
#### MyJoinLambdaQueryWrapper更符合面向对象(OOP),没有魔术值,全部基于lambda,但灵活性不如上面的
|
||||
|
||||
#### 简单的3表查询
|
||||
|
||||
@ -211,7 +222,7 @@ class test {
|
||||
|
||||
void testJoin() {
|
||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||
new MyLambdaQueryWrapper<UserDO>()
|
||||
new MyJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
||||
@ -267,7 +278,7 @@ class test {
|
||||
|
||||
void testJoin() {
|
||||
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
|
||||
new MyLambdaQueryWrapper<UserDO>()
|
||||
new MyJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
||||
|
@ -4,14 +4,19 @@ import com.baomidou.mybatisplus.core.conditions.SharedString;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.Query;
|
||||
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.github.mybatisplus.toolkit.Constant;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
|
||||
@ -80,6 +85,21 @@ public class MyQueryWrapper<T> extends MyAbstractWrapper<T, String, MyQueryWrapp
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
|
||||
public final MyQueryWrapper<T> selectAll(Class<T> clazz) {
|
||||
TableInfo info = TableInfoHelper.getTableInfo(clazz);
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add(Constant.TABLE_ALIAS + StringPool.DOT + info.getKeyColumn());
|
||||
list.addAll(info.getFieldList().stream().map(i -> Constant.TABLE_ALIAS + StringPool.DOT + i.getColumn()).collect(Collectors.toList()));
|
||||
String join = String.join(StringPool.COMMA, list);
|
||||
if (StringUtils.isBlank(sqlSelect.getStringValue())) {
|
||||
this.sqlSelect.setStringValue(join);
|
||||
} else {
|
||||
this.sqlSelect.setStringValue(this.getSqlSelect() + StringPool.COMMA + join);
|
||||
}
|
||||
return typedThis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSqlSelect() {
|
||||
return sqlSelect.getStringValue();
|
||||
|
Loading…
x
Reference in New Issue
Block a user