From e4914429fe997d9d4bfd1448c8d269818d11add2 Mon Sep 17 00:00:00 2001
From: yulichang <570810310@qq.com>
Date: Tue, 18 Apr 2023 11:34:10 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 119 +-----------------
.../query/MPJLambdaQueryWrapper.java | 18 +++
2 files changed, 24 insertions(+), 113 deletions(-)
diff --git a/README.md b/README.md
index 8c26e5f..9504866 100644
--- a/README.md
+++ b/README.md
@@ -2,13 +2,14 @@
* 对 mybatis-plus 多表查询的扩展
* 演示工程
-* 文档
+* 插件文档 https://ylctmh.com
* 点个Star支持一下吧 :)
QQ群:1022221898
-加入微信群
+添加作者微信,备注MPJ,加入微信群
+
-### 文档
+### 插件文档 https://ylctmh.com
## 使用方法
@@ -48,7 +49,7 @@ class test {
void testJoin() {
//和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
- MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
+ MPJLambdaWrapper wrapper = JoinWrappers.lambda(User.class)
.selectAll(UserDO.class)//查询user表全部字段
.select(UserAddressDO::getTel)//查询user_address tel 字段
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)//别名
@@ -147,113 +148,5 @@ MPJLambdaWrapper其他功能
* 简单的SQL函数使用
* ON语句多条件支持
-### String形式用法(MPJQueryWrapper)
-
-#### 简单的连表查询
-
-```java
-class test {
- @Resource
- private UserMapper userMapper;
-
- void testJoin() {
- MPJQueryWrapper wrapper = new MPJQueryWrapper()
- .selectAll(UserDO.class)
- .select("addr.tel", "addr.address", "a.province")
- .leftJoin("user_address addr on t.id = addr.user_id")
- .rightJoin("area a on addr.area_id = a.id")
- .like("addr.tel", "1")
- .le("a.province", "1");
-
- //列表查询
- List list = userMapper.selectJoinList(UserDTO.class, wrapper);
-
- //分页查询 (需要启用 mybatis plus 分页插件)
- Page listPage = userMapper.selectJoinPage(new Page<>(1, 10), UserDTO.class, wrapper);
- }
-}
-```
-
-对应sql
-
-```
-SELECT
- t.id,
- t.name,
- t.sex,
- t.head_img,
- addr.tel,
- addr.address,
- a.province
-FROM
- user t
- LEFT JOIN user_address addr on t.id = addr.user_id
- RIGHT JOIN area a on addr.area_id = a.id
-WHERE (
- addr.tel LIKE ?
- AND a.province <= ?)
-```
-
-说明:
-
-* UserDTO.class 查询结果类(resultType)
-* selectAll(UserDO.class) 查询主表全部字段(主表实体类)默认主表别名 "t"
-* select() mp的select策略是覆盖,以最后一次为准,这里的策略是追加,可以一直select
- 主表字段可以用lambda,会自动添加表别名,主表别名默认是 t ,非主表字段必须带别名查询
-* leftJoin() rightJoin() innerJoin() 传sql片段 格式 (表 + 别名 + 关联条件)
-* 条件查询,可以查询主表以及参与连接的所有表的字段,全部调用mp原生的方法,正常使用没有sql注入风险
-
-#### 还可以这么操作,但不建议
-
-```java
-class test {
- @Resource
- private UserMapper userMapper;
-
- void testJoin() {
- List list = userMapper.selectJoinList(UserDTO.class,
- new MPJQueryWrapper()
- .selectAll(UserDO.class)
- .select("addr.tel", "addr.address")
- //行列转换
- .select("CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex")
- //求和函数
- .select("sum(a.province) AS province")
- //自定义数据集
- .leftJoin("(select * from user_address) addr on t.id = addr.user_id")
- .rightJoin("area a on addr.area_id = a.id")
- .like("addr.tel", "1")
- .le("a.province", "1")
- .orderByDesc("addr.id"));
- }
-}
-```
-
-对应sql
-
-```
-SELECT
- t.id,
- t.name,
- t.sex,
- t.head_img,
- addr.tel,
- addr.address,
- CASE t.sex WHEN '男' THEN '1' ELSE '0' END AS sex,
- sum(a.province) AS province
-FROM
- user t
- LEFT JOIN (select * from user_address) addr on t.id = addr.user_id
- RIGHT JOIN area a on addr.area_id = a.id
-WHERE (
- addr.tel LIKE ?
- AND a.province <= ?)
-ORDER BY
- addr.id DESC
-```
-
-# wiki
-
-
-
+# 插件文档 wiki https://ylctmh.com
\ No newline at end of file
diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java
index d968477..458e58d 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java
@@ -54,6 +54,11 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper ignoreColumns = new ArrayList<>();
+ /**
+ * 是否 select distinct
+ */
+ private boolean selectDistinct = false;
+
/**
* 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity)
*/
@@ -209,6 +214,15 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper distinct() {
+ this.selectDistinct = true;
+ return typedThis;
+ }
+
public String getFrom() {
return from.getStringValue();
}
@@ -218,6 +232,10 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper故 sqlSelect selectColumn ignoreColumns from不向下传递