From c9e735522ceb27cebf12c5f1b4bbdad8baf3f2a5 Mon Sep 17 00:00:00 2001
From: yulichang <570810310@qq.com>
Date: Thu, 2 Nov 2023 10:03:08 +0800
Subject: [PATCH] readme
---
README-zh.md | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++
README.md | 4 +-
2 files changed, 165 insertions(+), 3 deletions(-)
create mode 100644 README-zh.md
diff --git a/README-zh.md b/README-zh.md
new file mode 100644
index 0000000..261dc2d
--- /dev/null
+++ b/README-zh.md
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+MyBatis-Plus-Join
+
+ 为简化开发工作、提高生产率而生
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+对 MyBatis-Plus 多表查询的扩展 |
+演示工程 |
+使用文档 |
+点个Star支持一下吧 (☆▽☆)
+
+
+
+QQ群:1022221898 或者
+添加作者微信,备注MPJ,加入微信群
+
+
+
+
+### 使用文档WIKI
+
+## 使用方法
+
+### 安装
+
+- Maven
+ ```xml
+
+ com.github.yulichang
+ mybatis-plus-join-boot-starter
+ 1.4.7.2
+
+ ```
+- Gradle
+ ```
+ implementation 'com.github.yulichang:mybatis-plus-join-boot-starter:1.4.7.1'
+ ```
+ 或者clone代码到本地执行 mvn install, 再引入以上依赖
+
+ 注意: MyBatis Plus版本需要3.3.0+
+
+
+### 使用
+
+* mapper继承MPJBaseMapper (必选)
+* service继承MPJBaseService (可选)
+* serviceImpl继承MPJBaseServiceImpl (可选)
+
+### Lambda形式用法(MPJLambdaWrapper)
+
+#### 简单的连表查询
+
+```java
+class test {
+ @Resource
+ private UserMapper userMapper;
+
+ void testJoin() {
+ //和Mybatis plus一致,MPJLambdaWrapper的泛型必须是主表的泛型,并且要用主表的Mapper来调用
+ MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class)
+ .selectAll(UserDO.class)//查询user表全部字段
+ .select(UserAddressDO::getTel)//查询user_address tel 字段
+ .selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)//别名
+ .select(AreaDO::getProvince, AreaDO::getCity)
+ .leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId)
+ .leftJoin(AreaDO.class, AreaDO::getId, UserAddressDO::getAreaId)
+ .eq(UserDO::getId, 1)
+ .like(UserAddressDO::getTel, "1")
+ .gt(UserDO::getId, 5);
+
+ //连表查询 返回自定义ResultType
+ List list = userMapper.selectJoinList(UserDTO.class, wrapper);
+
+ //分页查询 (需要启用 mybatis plus 分页插件)
+ Page listPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class, wrapper);
+ }
+}
+```
+
+对应sql
+
+```
+SELECT
+ t.id, t.name, t.sex, t.head_img,
+ t1.tel, t1.address AS userAddress,
+ t2.province, t2.city
+FROM
+ user t
+ LEFT JOIN user_address t1 ON t1.user_id = t.id
+ LEFT JOIN area t2 ON t2.id = t1.area_id
+WHERE (
+ t.id = ?
+ AND t1.tel LIKE ?
+ AND t.id > ?)
+```
+
+说明:
+
+* UserDTO.class 查询结果返回类(resultType)
+* selectAll() 查询指定实体类的全部字段
+* select() 查询指定的字段,支持可变参数,同一个select只能查询相同表的字段
+* selectAs() 字段别名查询,用于数据库字段与业务实体类属性名不一致时使用
+* leftJoin() 参数说明
+ 第一个参数: 参与连表的实体类class
+ 第二个参数: 连表的ON字段,这个属性必须是第一个参数实体类的属性
+ 第三个参数: 参与连表的ON的另一个实体类属性
+* 默认主表别名是t,其他的表别名以先后调用的顺序使用t1,t2,t3....
+* 条件查询,可以查询主表以及参与连接的所有表的字段,全部调用mp原生的方法,正常使用没有sql注入风险
+
+#### 一对多查询
+
+```java
+class test {
+ @Resource
+ private UserMapper userMapper;
+
+ @Test
+ void testResultMap() {
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(User.class)
+ .selectAll(UserDO.class)
+ //对多查询
+ .selectCollection(AddressDO.class, UesrDTO::getAddressList)
+ //对一查询
+ .selectAssociation(AddressDO.class, UesrDTO::getAddress)
+ .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId);
+
+ List dtoList = userMapper.selectJoinList(UserDTO.class, wrapper);
+
+ //关于对多分页查询
+ //由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
+ }
+}
+```
+
+MPJLambdaWrapper其他功能
+
+*
+ 一对一,一对多使用
+* 简单的SQL函数使用
+* ON语句多条件支持
+* 其他全部功能请参考使用文档
+
+# 使用文档 wiki
diff --git a/README.md b/README.md
index 9890240..1acaf01 100644
--- a/README.md
+++ b/README.md
@@ -33,9 +33,7 @@
QQ群:1022221898 或者
-添加作者微信,备注MPJ,加入微信群
-
-
+添加作者微信,备注MPJ,加入微信群
### 使用文档WIKI