This commit is contained in:
Dftre 2024-05-19 02:24:17 +08:00
parent cd8201c5d7
commit 3fe91e7155
4 changed files with 48 additions and 23 deletions

View File

@ -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 ""; // 映射表右字段
}

View File

@ -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";

View File

@ -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<String> getQueryColumns() {
public List<String> getQueryColumnNames() {
List<String> columns = Arrays.asList(this.table.columns());
if (columns.size() <= 0) {
columns = this.columns.stream()
@ -141,6 +143,23 @@ public class TableInfo {
}
public List<String> getColumnNames() {
List<String> 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<ColumnInfo> getColumns() {
return columns;
}

View File

@ -34,7 +34,7 @@ public class SQLUtil {
public static <T extends BaseEntity> 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 <T extends BaseEntity> 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()) {