diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/ColumnMap.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/ColumnMap.java index e451e72..5e1128f 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/ColumnMap.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/ColumnMap.java @@ -14,6 +14,12 @@ import java.lang.annotation.Target; @Target(ElementType.FIELD) public @interface ColumnMap { String name(); // 对应数据库字段 + String target(); // 映射表来源 - String on(); // 映射表字段 + + String on() default ""; // 映射表字段 + + String onLeft() default ""; // 映射表左字段 + + String onRight() default ""; // 映射表右字段 } diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java index 84b81b1..cc3d746 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/annotation/EnableTableMap.java @@ -19,11 +19,11 @@ public @interface EnableTableMap { String user() default ""; - String userOn() default ""; + String userOn() default "user_id"; - String userOnLeft() default "create_by"; + String userOnLeft() default ""; - String userOnRight() default "user_name"; + String userOnRight() default ""; String deptOn() default "dept_id"; diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java index 000b866..76fea37 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/TableInfo.java @@ -54,20 +54,26 @@ public class TableInfo { this.getMapColumns().stream() .map(MapColumnInfo::getJoin) - .map(join -> join.target() + " on " - + join.target() + "." + join.on() + " = " - + this.getTableNameT() + "." + join.on()) + .map(join -> { + String left = join.onLeft(); + String right = join.onRight(); + if (StringUtils.isEmpty(left) || StringUtils.isEmpty(right)) { + left = join.onLeft(); + right = join.onRight(); + } + return join.target() + " on " + + join.target() + "." + right + " = " + + this.getTableNameT() + "." + left; + }) .forEach(joinSql::add); + if (this.enableTableMap != null) { if (StringUtils.isNotEmpty(this.enableTableMap.user())) { - String left = ""; - String right = ""; - if (StringUtils.isEmpty(this.enableTableMap.deptOn())) { + String left = this.enableTableMap.userOnLeft(); + String right = this.enableTableMap.userOnRight(); + if (StringUtils.isEmpty(left) || StringUtils.isEmpty(right)) { left = this.enableTableMap.userOn(); right = this.enableTableMap.userOn(); - } else { - left = this.enableTableMap.userOnLeft(); - right = this.enableTableMap.userOnRight(); } this.joinSql.add("sys_user " + this.enableTableMap.user() + " on " + this.enableTableMap.user() + "." + right + " = " @@ -76,16 +82,12 @@ public class TableInfo { } if (StringUtils.isNotEmpty(this.enableTableMap.dept())) { - String left = ""; - String right = ""; - if (StringUtils.isEmpty(this.enableTableMap.deptOn())) { + String left = this.enableTableMap.deptOnLeft(); + String right = this.enableTableMap.deptOnRight(); + if (StringUtils.isEmpty(right) || StringUtils.isEmpty(left)) { left = this.enableTableMap.deptOn(); right = this.enableTableMap.deptOn(); - } else { - left = this.enableTableMap.deptOnLeft(); - right = this.enableTableMap.deptOnRight(); } - this.joinSql.add("sys_dept " + this.enableTableMap.dept() + " on " + this.enableTableMap.dept() + "." + right + " = " + this.getTableNameT() + "." + left); @@ -121,7 +123,7 @@ public class TableInfo { return this.tableName; } - public List getQueryColumns() { + public List getQueryColumnNames() { List columns = Arrays.asList(this.table.columns()); if (columns.size() <= 0) { columns = this.columns.stream() @@ -141,6 +143,23 @@ public class TableInfo { } + public List getColumnNames() { + List columns = this.columns.stream() + .map(ColumnInfo::getColumnName) + .collect(Collectors.toList()); + + if (this.isEnbleMap()) { + columns = columns.stream() + .map(column -> this.getTableNameT() + "." + column) + .collect(Collectors.toList()); + this.mapColumns.stream() + .map(column -> column.getJoin().target() + "." + column.getColumnName()) + .forEach(columns::add); + } + + return columns; + } + public List getColumns() { return columns; } diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java index b34899a..98b5792 100644 --- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java +++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/SQLUtil.java @@ -34,7 +34,7 @@ public class SQLUtil { public static String list(T entity) { SQL sql = new SQL(); TableInfo tableInfo = getTableInfo(entity); - sql.SELECT(String.join(",", tableInfo.getQueryColumns())) + sql.SELECT(String.join(",", tableInfo.getQueryColumnNames())) .FROM(tableInfo.getTableNameFrom()); if (tableInfo.isEnbleMap()) { @@ -109,7 +109,7 @@ public class SQLUtil { public static String selectById(T entity) { SQL sql = new SQL(); TableInfo tableInfo = getTableInfo(entity); - sql.SELECT(String.join(",", tableInfo.getQueryColumns())) + sql.SELECT(String.join(",", tableInfo.getColumnNames())) .FROM(tableInfo.getTableNameFrom()); if (tableInfo.isEnbleMap()) {