mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
1.0.9
This commit is contained in:
parent
fa474ddbe6
commit
77d3722d1f
212
README.md
212
README.md
@ -8,6 +8,10 @@
|
||||
|
||||
[goto wiki](https://gitee.com/best_handsome/mybatis-plus-join/wikis)
|
||||
|
||||
## 通用连表wrapper
|
||||
|
||||
[点击跳转至使用方法](https://gitee.com/best_handsome/mybatis-plus-join/tree/master/src/main/java/com/github/yulichang/common)
|
||||
|
||||
### 安装
|
||||
|
||||
1. 在项目中添加依赖,依赖已经包含了mybatis-plus-boot-starter<3.4.2><br>
|
||||
@ -80,6 +84,108 @@ MPJLambdaQueryWrapper相当于mp的LambdaQueryWrapper
|
||||
MPJQueryWrapper.lambda() ===> MPJLambdaQueryWrapper
|
||||
MPJLambdaQueryWrapper.stringQuery() ===> MPJQueryWrapper
|
||||
|
||||
## MPJJoinLambdaQueryWrapper用法
|
||||
|
||||
#### MPJJoinLambdaQueryWrapper示例
|
||||
|
||||
#### 简单的3表查询
|
||||
|
||||
```java
|
||||
class test {
|
||||
@Resource
|
||||
private UserMapper userMapper;
|
||||
|
||||
void testJoin() {
|
||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||
new MPJJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.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(true, UserDO::getId, 1)
|
||||
.like(true, UserAddressDO::getTel, "1")
|
||||
.gt(true, UserDO::getId, 5));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
对应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只能查询相同表的字段
|
||||
故将UserAddressDO和AreaDO分开为两个select()
|
||||
* selectAs() 字段别名查询,用于数据库字段与业务实体类属性名不一致时使用
|
||||
* leftJoin() 参数说明
|
||||
第一个参数: 参与连表的实体类class
|
||||
第二个参数: 连表的ON字段,这个属性必须是第一个参数实体类的属性
|
||||
第三个参数: 参与连表的ON的另一个实体类属性
|
||||
* 默认主表别名是t,其他的表别名以先后调用的顺序使用t1,t2,t3....
|
||||
* 条件查询,可以查询主表以及参与连接的所有表的字段,全部调用mp原生的方法,正常使用没有sql注入风险
|
||||
|
||||
#### 分页查询
|
||||
|
||||
```java
|
||||
class test {
|
||||
@Resource
|
||||
private UserMapper userMapper;
|
||||
|
||||
void testJoin() {
|
||||
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
|
||||
new MPJJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
||||
.select(AreaDO::getProvince, AreaDO::getCity)
|
||||
.leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId)
|
||||
.leftJoin(AreaDO.class, AreaDO::getId, UserAddressDO::getAreaId));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
对应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
|
||||
LIMIT ?,?
|
||||
```
|
||||
|
||||
## MPJQueryWrapper和MPJLambdaQueryWrapper
|
||||
|
||||
### 简单的3表查询
|
||||
@ -227,112 +333,6 @@ ORDER BY
|
||||
addr.id DESC
|
||||
```
|
||||
|
||||
## MPJJoinLambdaQueryWrapper用法
|
||||
|
||||
MPJJoinLambdaQueryWrapper与上面连个Wrapper不同,是一套新的支持多表的wrapper
|
||||
MPJQueryWrapper是基于QueryWrapper扩展的MPJLambdaQueryWrapper是基于LambdaQueryWrapper扩展的
|
||||
而LambdaQueryWrapper由于泛型约束,不支持扩展成多表的lambdaWrapper
|
||||
|
||||
#### MPJJoinLambdaQueryWrapper示例
|
||||
|
||||
#### 简单的3表查询
|
||||
|
||||
```java
|
||||
class test {
|
||||
@Resource
|
||||
private UserMapper userMapper;
|
||||
|
||||
void testJoin() {
|
||||
List<UserDTO> list = userMapper.selectJoinList(UserDTO.class,
|
||||
new MPJJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.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(true, UserDO::getId, 1)
|
||||
.like(true, UserAddressDO::getTel, "1")
|
||||
.gt(true, UserDO::getId, 5));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
对应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只能查询相同表的字段
|
||||
故将UserAddressDO和AreaDO分开为两个select()
|
||||
* selectAs() 字段别名查询,用于数据库字段与业务实体类属性名不一致时使用
|
||||
* leftJoin() 参数说明
|
||||
第一个参数: 参与连表的实体类class
|
||||
第二个参数: 连表的ON字段,这个属性必须是第一个参数实体类的属性
|
||||
第三个参数: 参与连表的ON的另一个实体类属性
|
||||
* 默认主表别名是t,其他的表别名以先后调用的顺序使用t1,t2,t3....
|
||||
* 条件查询,可以查询主表以及参与连接的所有表的字段,全部调用mp原生的方法,正常使用没有sql注入风险
|
||||
|
||||
#### 分页查询
|
||||
|
||||
```java
|
||||
class test {
|
||||
@Resource
|
||||
private UserMapper userMapper;
|
||||
|
||||
void testJoin() {
|
||||
IPage<UserDTO> iPage = userMapper.selectJoinPage(new Page<>(2, 10), UserDTO.class,
|
||||
new MPJJoinLambdaQueryWrapper<UserDO>()
|
||||
.selectAll(UserDO.class)
|
||||
.select(UserAddressDO::getTel)
|
||||
.selectAs(UserAddressDO::getAddress, UserDTO::getUserAddress)
|
||||
.select(AreaDO::getProvince, AreaDO::getCity)
|
||||
.leftJoin(UserAddressDO.class, UserAddressDO::getUserId, UserDO::getId)
|
||||
.leftJoin(AreaDO.class, AreaDO::getId, UserAddressDO::getAreaId));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
对应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
|
||||
LIMIT ?,?
|
||||
```
|
||||
|
||||
# [wiki](https://gitee.com/best_handsome/mybatis-plus-join/wikis)
|
||||
|
||||
|
||||
|
@ -2,6 +2,14 @@
|
||||
|
||||
### 使用方法
|
||||
|
||||
#### 如需单独使用 请拷贝以下5个类
|
||||
|
||||
[com.github.yulichang.common.JoinLambdaWrapper](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/common/JoinLambdaWrapper.java)
|
||||
[com.github.yulichang.common.JoinAbstractWrapper](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java)
|
||||
[com.github.yulichang.common.JoinAbstractLambdaWrapper](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/common/JoinAbstractLambdaWrapper.java)
|
||||
[com.github.yulichang.wrapper.interfaces.Compare](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/wrapper/interfaces/Compare.java)
|
||||
[com.github.yulichang.wrapper.interfaces.Func](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/main/java/com/github/yulichang/wrapper/interfaces/Func.java)
|
||||
|
||||
#### 不使用表别名
|
||||
|
||||
注解:
|
||||
|
Loading…
x
Reference in New Issue
Block a user