diff --git a/README.md b/README.md index 15ef124..45e1e25 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,55 @@ # mybatis-plus-join + 支持连表查询的[mybatis-plus](https://gitee.com/baomidou/mybatis-plus) ## 运行环境 -* mysql8 -* jdk8 + +* mysql8 +* jdk8 * mybatis-plus 3.4.2 ## 使用方法 -* [参考测试类](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/test/java/com/example/mp/MpJoinTest.java) \ No newline at end of file + +### 使用 + +* entity继承MyBaseEntity +* mapper继承MyBaseMapper +* service继承MyBaseService +* serviceImpl继承MyBaseServiceImpl + +### MyLambdaQueryWrapper用法 + +#### select(UserEntity::getId) 查询指定的字段,支持可变参数 + +查询user表中的head_img,name和user_address表中的address,tel +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/select.png) +对应sql +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectSql.png) + +#### selectAll(UserEntity.class) 查询UserEntity全部字段 + +查询user全部字段和user_address表中的address,tel +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectAll.png) +对应sql +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectAllSql.png) + +#### as(UserEntity::getHeadImg,UserDTO::getUserHeadImg) + +查询字段head_img as userHeadImg +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectAs.png) +对应sql +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectAsSql.png) + +#### 左连接 leftJoin(UserEntity::getId,UserAddressEntity::getUserId,right -> right) + +前连个参数是两个表的连接条件 -> user left join user_address on user.id = User_address.user_id +第三个参数是右表wrapper对象,可以继续使用,以上方法. + +#### 条件查询eq() + +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectEq.png) +对应sql +![image](https://gitee.com/best_handsome/mybatis-plus-join/raw/master/doc/selectEqSql.png) + +#### [参考测试类](https://gitee.com/best_handsome/mybatis-plus-join/blob/master/src/test/java/com/example/mp/MpJoinTest.java) + diff --git a/doc/selectAs.png b/doc/selectAs.png new file mode 100644 index 0000000..fa1f801 Binary files /dev/null and b/doc/selectAs.png differ diff --git a/doc/selectAsSql.png b/doc/selectAsSql.png new file mode 100644 index 0000000..3b0ed21 Binary files /dev/null and b/doc/selectAsSql.png differ diff --git a/src/main/java/com/example/mp/business/dto/UserDTO.java b/src/main/java/com/example/mp/business/dto/UserDTO.java index 981b443..9e1faae 100644 --- a/src/main/java/com/example/mp/business/dto/UserDTO.java +++ b/src/main/java/com/example/mp/business/dto/UserDTO.java @@ -12,6 +12,8 @@ public class UserDTO { private String sex; /** user */ private String headImg; + /** user */ + private String userHeadImg;//同 headImg 别名测试 /** user_address */ private String tel; /** user_address */ diff --git a/src/main/java/com/example/mp/mybatis/plus/wrapper/MyJoinLambdaQueryWrapper.java b/src/main/java/com/example/mp/mybatis/plus/wrapper/MyJoinLambdaQueryWrapper.java index 731b37c..674f1b5 100644 --- a/src/main/java/com/example/mp/mybatis/plus/wrapper/MyJoinLambdaQueryWrapper.java +++ b/src/main/java/com/example/mp/mybatis/plus/wrapper/MyJoinLambdaQueryWrapper.java @@ -111,9 +111,9 @@ public class MyJoinLambdaQueryWrapper extends MyAbstract setEntityClass(clazz); TableInfo info = TableInfoHelper.getTableInfo(getEntityClass()); info.getFieldList().forEach(s -> - selectColumnList.add(new SelectColumn(this.rUid, s.getColumn(), s.getColumn()/*s.getProperty()*/, null))); + selectColumnList.add(new SelectColumn(this.rUid, s.getColumn(), null, null))); if (StringUtils.isNotBlank(info.getKeyColumn())) { - selectColumnList.add(new SelectColumn(this.rUid, info.getKeyColumn(),info.getKeyColumn()/* info.getKeyProperty()*/, null)); + selectColumnList.add(new SelectColumn(this.rUid, info.getKeyColumn(), null, null)); } return typedThis; } diff --git a/src/test/java/com/example/mp/MpJoinTest.java b/src/test/java/com/example/mp/MpJoinTest.java index 1021a17..b6a236f 100644 --- a/src/test/java/com/example/mp/MpJoinTest.java +++ b/src/test/java/com/example/mp/MpJoinTest.java @@ -119,9 +119,14 @@ class MpJoinTest { *

* 自己去探索发现吧! */ + @SuppressWarnings("all") @Test void test4() { - //todo + userMapper.selectJoinList(new MyLambdaQueryWrapper() + .as(UserEntity::getHeadImg,UserDTO::getUserHeadImg) + .leftJoin(UserEntity::getId, UserAddressEntity::getUserId, + right -> right.select(UserAddressEntity::getAddress, UserAddressEntity::getTel)) + , UserDTO.class); }