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,同样添加了以上方法
|
MyBaseServiceImpl 继承了ServiceImpl,同样添加了以上方法
|
||||||
|
|
||||||
## 核心类 MyLambdaQuery 和 MyLambdaQueryWrapper
|
## 核心类 MyQueryWrapper, MyLambdaQueryWrapper和MyJoinLambdaQueryWrapper
|
||||||
|
|
||||||
[->区别](https://gitee.com/best_handsome/mybatis-plus-join/wikis/%E8%AF%B4%E6%98%8E)
|
[->区别](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表查询
|
### 简单的3表查询
|
||||||
|
|
||||||
@ -67,7 +74,7 @@ class test {
|
|||||||
|
|
||||||
void testJoin() {
|
void testJoin() {
|
||||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||||
new MyLambdaQuery<UserDO>()
|
new MyLambdaQueryWrapper<UserDO>()
|
||||||
.selectAll(UserDO.class)
|
.selectAll(UserDO.class)
|
||||||
.select("addr.tel", "addr.address", "a.province")
|
.select("addr.tel", "addr.address", "a.province")
|
||||||
.leftJoin("user_address addr on t.id = addr.user_id")
|
.leftJoin("user_address addr on t.id = addr.user_id")
|
||||||
@ -121,7 +128,7 @@ class test {
|
|||||||
|
|
||||||
void testJoin() {
|
void testJoin() {
|
||||||
IPage<UserDTO> page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class,
|
IPage<UserDTO> page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class,
|
||||||
new MyLambdaQuery<UserDO>()
|
new MyLambdaQueryWrapper<UserDO>()
|
||||||
.selectAll(UserDO.class)
|
.selectAll(UserDO.class)
|
||||||
.select("addr.tel", "addr.address")
|
.select("addr.tel", "addr.address")
|
||||||
.select("a.province")
|
.select("a.province")
|
||||||
@ -155,7 +162,7 @@ class test {
|
|||||||
|
|
||||||
void testJoin() {
|
void testJoin() {
|
||||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||||
new MyLambdaQuery<UserDO>()
|
new MyLambdaQueryWrapper<UserDO>()
|
||||||
.selectAll(UserDO.class)
|
.selectAll(UserDO.class)
|
||||||
.select("addr.tel", "addr.address")
|
.select("addr.tel", "addr.address")
|
||||||
//行列转换
|
//行列转换
|
||||||
@ -198,9 +205,13 @@ ORDER BY
|
|||||||
addr.id DESC
|
addr.id DESC
|
||||||
```
|
```
|
||||||
|
|
||||||
## MyLambdaQueryWrapper用法
|
## MyJoinLambdaQueryWrapper用法
|
||||||
|
|
||||||
#### MyLambdaQueryWrapper更符合面向对象(OOP),没有魔术值,全部基于lambda,但灵活性不如上面的
|
MyJoinLambdaQueryWrapper与MyLambdaQueryWrapper不同,是一套新的支持多表的wrapper
|
||||||
|
MyLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
|
||||||
|
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
|
||||||
|
|
||||||
|
#### MyJoinLambdaQueryWrapper更符合面向对象(OOP),没有魔术值,全部基于lambda,但灵活性不如上面的
|
||||||
|
|
||||||
#### 简单的3表查询
|
#### 简单的3表查询
|
||||||
|
|
||||||
@ -211,7 +222,7 @@ class test {
|
|||||||
|
|
||||||
void testJoin() {
|
void testJoin() {
|
||||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||||
new MyLambdaQueryWrapper<UserDO>()
|
new MyJoinLambdaQueryWrapper<UserDO>()
|
||||||
.selectAll(UserDO.class)
|
.selectAll(UserDO.class)
|
||||||
.select(UserAddressDO::getTel)
|
.select(UserAddressDO::getTel)
|
||||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
||||||
@ -267,7 +278,7 @@ class test {
|
|||||||
|
|
||||||
void testJoin() {
|
void testJoin() {
|
||||||
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
|
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
|
||||||
new MyLambdaQueryWrapper<UserDO>()
|
new MyJoinLambdaQueryWrapper<UserDO>()
|
||||||
.selectAll(UserDO.class)
|
.selectAll(UserDO.class)
|
||||||
.select(UserAddressDO::getTel)
|
.select(UserAddressDO::getTel)
|
||||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
.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.query.Query;
|
||||||
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
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.metadata.TableInfoHelper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
|
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||||
import com.github.mybatisplus.toolkit.Constant;
|
import com.github.mybatisplus.toolkit.Constant;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
|
* copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
|
||||||
@ -80,6 +85,21 @@ public class MyQueryWrapper<T> extends MyAbstractWrapper<T, String, MyQueryWrapp
|
|||||||
return typedThis;
|
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
|
@Override
|
||||||
public String getSqlSelect() {
|
public String getSqlSelect() {
|
||||||
return sqlSelect.getStringValue();
|
return sqlSelect.getStringValue();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user