diff --git a/src/main/java/com/github/yulichang/common/support/func/README.md b/src/main/java/com/github/yulichang/common/support/func/README.md index c7f5414..48976ba 100644 --- a/src/main/java/com/github/yulichang/common/support/func/README.md +++ b/src/main/java/com/github/yulichang/common/support/func/README.md @@ -87,10 +87,10 @@ class MpJoinTest { @Test void testS() { UserDTO dto = userMapper.userLeftJoin(new QueryWrapper() - .eq(S.a(UserDO::getId), "1") - .gt(S.a(UserDO::getSex), "3") - .eq(S.b(UserAddressDO::getTel), "10086") - .like(S.b(UserAddressDO::getAddress), "北京")); + .eq(S.a(UserDO::getId), "1")//a.id + .gt(S.a(UserDO::getSex), "3")//a.sex + .eq(S.b(UserAddressDO::getTel), "10086")//b.tel + .like(S.b(UserAddressDO::getAddress), "北京"));//b.address } /** @@ -99,10 +99,10 @@ class MpJoinTest { @Test void testF() { UserDTO dto = userMapper.userLeftJoin(new QueryWrapper() - .eq(F.s(UserDO::getId), "1") - .gt(F.s(UserDO::getSex), "3") - .eq(F.s(UserAddressDO::getTel), "10086") - .like(F.s(UserAddressDO::getAddress), "北京")); + .eq(F.s(UserDO::getId), "1")//user.id + .gt(F.s(UserDO::getSex), "3")//user.sex + .eq(F.s(UserAddressDO::getTel), "10086")//user_address.tel + .like(F.s(UserAddressDO::getAddress), "北京"));//user_address.address } } ``` diff --git a/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java b/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java index 531503d..72a8171 100644 --- a/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java +++ b/src/main/java/com/github/yulichang/method/MPJAbstractMethod.java @@ -33,4 +33,14 @@ public abstract class MPJAbstractMethod extends AbstractMethod { return SqlScriptUtils.convertChoose(String.format("%s != null and %s != null", WRAPPER, Q_WRAPPER_SQL_SELECT), SqlScriptUtils.unSafeParam(Q_WRAPPER_SQL_SELECT), selectColumns); } + + protected String sqlAlias() { + return SqlScriptUtils.convertIf("${ew.alias}", String.format("%s != null and %s != ''", "ew.alias", "ew.alias"), false); + } + + protected String sqlFrom() { + return SqlScriptUtils.convertIf("${ew.from}", String.format("%s != null and %s != ''", "ew.from", "ew.from"), false); + } + + } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinList.java b/src/main/java/com/github/yulichang/method/SelectJoinList.java index ae7eada..c51ced8 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinList.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinList.java @@ -6,14 +6,16 @@ import org.apache.ibatis.mapping.SqlSource; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinList extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_LIST; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Object.class); } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinMap.java b/src/main/java/com/github/yulichang/method/SelectJoinMap.java index 10d1fd3..efffa5f 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinMap.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinMap.java @@ -8,14 +8,16 @@ import java.util.Map; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinMap extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAP; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class); } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinMaps.java b/src/main/java/com/github/yulichang/method/SelectJoinMaps.java index 3c8bac9..9aa3ca7 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinMaps.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinMaps.java @@ -8,14 +8,16 @@ import java.util.Map; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinMaps extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class); } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinMapsPage.java b/src/main/java/com/github/yulichang/method/SelectJoinMapsPage.java index 8abcade..2ca6219 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinMapsPage.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinMapsPage.java @@ -8,14 +8,16 @@ import java.util.Map; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinMapsPage extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_MAPS_PAGE; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Map.class); } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinOne.java b/src/main/java/com/github/yulichang/method/SelectJoinOne.java index 59e81dc..47d0a8d 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinOne.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinOne.java @@ -6,14 +6,16 @@ import org.apache.ibatis.mapping.SqlSource; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinOne extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_ONE; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Object.class); } diff --git a/src/main/java/com/github/yulichang/method/SelectJoinPage.java b/src/main/java/com/github/yulichang/method/SelectJoinPage.java index 6993963..1a94e5e 100644 --- a/src/main/java/com/github/yulichang/method/SelectJoinPage.java +++ b/src/main/java/com/github/yulichang/method/SelectJoinPage.java @@ -6,14 +6,16 @@ import org.apache.ibatis.mapping.SqlSource; /** * copy {@link com.baomidou.mybatisplus.core.injector.methods.SelectMaps} + * + * @author yulichang */ public class SelectJoinPage extends MPJAbstractMethod { @Override public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { SqlMethod sqlMethod = SqlMethod.SELECT_JOIN_PAGE; - String sql = String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, true), - tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlAlias(), sqlFrom(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); return this.addSelectMappedStatementForOther(mapperClass, sqlMethod.getMethod(), sqlSource, Object.class); } diff --git a/src/main/java/com/github/yulichang/method/SqlMethod.java b/src/main/java/com/github/yulichang/method/SqlMethod.java index 75faa14..2ad0fe3 100644 --- a/src/main/java/com/github/yulichang/method/SqlMethod.java +++ b/src/main/java/com/github/yulichang/method/SqlMethod.java @@ -15,22 +15,22 @@ public enum SqlMethod { * 连表查询 */ SELECT_JOIN_ONE("selectJoinOne", "返回一条记录", - ""), + ""), SELECT_JOIN_LIST("selectJoinList", "返回List集合", - ""), + ""), SELECT_JOIN_MAP("selectJoinMap", "返回一个Map", - ""), + ""), SELECT_JOIN_MAPS("selectJoinMaps", "返回Map集合", - ""), + ""), SELECT_JOIN_PAGE("selectJoinPage", "连表查询并分页", - ""), + ""), SELECT_JOIN_MAPS_PAGE("selectJoinMapsPage", "返回Map集合并分页", - ""); + ""); private final String method; private final String desc; diff --git a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java index e89193a..fcb919a 100644 --- a/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java +++ b/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java @@ -27,6 +27,8 @@ import java.util.stream.Collectors; * copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper} *

* sqlSelect 由覆盖改为追加 + * + * @author yulichang */ @SuppressWarnings("all") public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper> diff --git a/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java b/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java index 641f633..dd3e70c 100644 --- a/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java +++ b/src/main/java/com/github/yulichang/query/MPJQueryWrapper.java @@ -22,6 +22,8 @@ import java.util.stream.Collectors; /** * copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} + * + * @author yulichang */ @SuppressWarnings("serial") public class MPJQueryWrapper extends AbstractWrapper> diff --git a/src/main/java/com/github/yulichang/toolkit/LambdaUtils.java b/src/main/java/com/github/yulichang/toolkit/LambdaUtils.java index 7e4e0e4..2862d33 100644 --- a/src/main/java/com/github/yulichang/toolkit/LambdaUtils.java +++ b/src/main/java/com/github/yulichang/toolkit/LambdaUtils.java @@ -13,7 +13,6 @@ import java.util.Objects; * @see com.baomidou.mybatisplus.core.toolkit.LambdaUtils * @see org.apache.ibatis.reflection.property.PropertyNamer */ - public final class LambdaUtils { /** diff --git a/src/main/java/com/github/yulichang/toolkit/Wrappers.java b/src/main/java/com/github/yulichang/toolkit/Wrappers.java new file mode 100644 index 0000000..dbb5520 --- /dev/null +++ b/src/main/java/com/github/yulichang/toolkit/Wrappers.java @@ -0,0 +1,40 @@ +package com.github.yulichang.toolkit; + +import com.github.yulichang.common.JoinLambdaWrapper; +import com.github.yulichang.common.support.alias.AliasLambdaQueryWrapper; +import com.github.yulichang.common.support.alias.AliasQueryWrapper; +import com.github.yulichang.query.MPJLambdaQueryWrapper; +import com.github.yulichang.query.MPJQueryWrapper; +import com.github.yulichang.wrapper.MPJJoinLambdaQueryWrapper; + +/** + * Wrapper 条件构造 + * + * @author yulichang + */ +public class Wrappers { + + public static MPJQueryWrapper queryJoin() { + return new MPJQueryWrapper<>(); + } + + public static MPJLambdaQueryWrapper lambdaJoin() { + return new MPJLambdaQueryWrapper<>(); + } + + public static MPJJoinLambdaQueryWrapper lambdaJoinWrapper() { + return new MPJJoinLambdaQueryWrapper<>(); + } + + public static JoinLambdaWrapper commonJoin() { + return new JoinLambdaWrapper<>(); + } + + public static AliasQueryWrapper aliasQueryJoin() { + return new AliasQueryWrapper<>(); + } + + public static AliasLambdaQueryWrapper aliasLambdaJoin() { + return new AliasLambdaQueryWrapper<>(); + } +} diff --git a/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java b/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java index 5d78199..fc035f5 100644 --- a/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java +++ b/src/main/java/com/github/yulichang/wrapper/MPJJoinLambdaQueryWrapper.java @@ -24,6 +24,8 @@ import java.util.stream.Collectors; /** * copy {@link com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper} + * + * @author yulichang */ @SuppressWarnings("all") public class MPJJoinLambdaQueryWrapper extends MPJAbstractLambdaWrapper>