From 3fa79af96b063a2f1af9205b3fcc0d82450fe87b Mon Sep 17 00:00:00 2001 From: admin <570810310@qq.com> Date: Tue, 2 Feb 2021 11:28:13 +0800 Subject: [PATCH] update --- README.md | 29 +++++++++++++------ .../mybatisplus/query/MyQueryWrapper.java | 20 +++++++++++++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9d7eb9d..8fbb01c 100644 --- a/README.md +++ b/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 list = userMapper.selectJoinList(UserDTO.class, - new MyLambdaQuery() + new MyLambdaQueryWrapper() .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 page = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, - new MyLambdaQuery() + new MyLambdaQueryWrapper() .selectAll(UserDO.class) .select("addr.tel", "addr.address") .select("a.province") @@ -155,7 +162,7 @@ class test { void testJoin() { List list = userMapper.selectJoinList(UserDTO.class, - new MyLambdaQuery() + new MyLambdaQueryWrapper() .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 list = userMapper.selectJoinList(UserDTO.class, - new MyLambdaQueryWrapper() + new MyJoinLambdaQueryWrapper() .selectAll(UserDO.class) .select(UserAddressDO::getTel) .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress) @@ -267,7 +278,7 @@ class test { void testJoin() { IPage iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, - new MyLambdaQueryWrapper() + new MyJoinLambdaQueryWrapper() .selectAll(UserDO.class) .select(UserAddressDO::getTel) .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress) diff --git a/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java b/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java index 6f8beb3..ca6f578 100644 --- a/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java +++ b/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java @@ -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 extends MyAbstractWrapper selectAll(Class clazz) { + TableInfo info = TableInfoHelper.getTableInfo(clazz); + List 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();