This commit is contained in:
@@ -562,7 +562,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
try {
|
||||
if (!info.isVirtualEntity()) {
|
||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, info);
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
CharSequence where = node.createSQLExpress(info, joinTabalis);
|
||||
String sql = "DELETE " + (this.readPool.isMysql() ? "a" : "") + " FROM " + info.getTable(node) + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " delete sql=" + sql);
|
||||
@@ -755,7 +755,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
int c = -1;
|
||||
if (!info.isVirtualEntity()) {
|
||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, info);
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
CharSequence where = node.createSQLExpress(info, joinTabalis);
|
||||
|
||||
String sql = "UPDATE " + info.getTable(node) + " a SET " + info.getSQLColumn("a", column) + " = "
|
||||
@@ -909,7 +909,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
int c = -1;
|
||||
if (!virtual) {
|
||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, info);
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
CharSequence where = node.createSQLExpress(info, joinTabalis);
|
||||
|
||||
String sql = "UPDATE " + info.getTable(node) + " a SET " + setsql + (join == null ? "" : join)
|
||||
@@ -1034,7 +1034,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
int c = -1;
|
||||
if (!virtual) {
|
||||
Map<Class, String> joinTabalis = node.getJoinTabalis();
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, info);
|
||||
CharSequence join = node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
CharSequence where = node.createSQLExpress(info, joinTabalis);
|
||||
|
||||
String sql = "UPDATE " + info.getTable(node) + " a SET " + setsql
|
||||
@@ -1119,7 +1119,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
}
|
||||
}
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, joinTabalis);
|
||||
final String sql = "SELECT " + func.getColumn((column == null || column.isEmpty() ? "*" : ("a." + column))) + " FROM " + info.getTable(node) + " a"
|
||||
+ (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
@@ -1166,7 +1166,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
}
|
||||
final String sqlkey = info.getSQLColumn(null, keyColumn);
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, joinTabalis);
|
||||
final String sql = "SELECT a." + sqlkey + ", " + func.getColumn((funcColumn == null || funcColumn.isEmpty() ? "*" : ("a." + funcColumn)))
|
||||
+ " FROM " + info.getTable(node) + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where)) + " GROUP BY a." + sqlkey;
|
||||
@@ -1265,7 +1265,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
try {
|
||||
final SelectColumn sels = selects;
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, joinTabalis);
|
||||
final String sql = "SELECT a.* FROM " + info.getTable(node) + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(clazz.getSimpleName() + " find sql=" + sql);
|
||||
@@ -1328,7 +1328,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
final Connection conn = createReadSQLConnection();
|
||||
try {
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, joinTabalis);
|
||||
final String sql = "SELECT COUNT(" + info.getPrimarySQLColumn("a") + ") FROM " + info.getTable(node) + " a" + (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(clazz.getSimpleName() + " exists sql=" + sql);
|
||||
@@ -1561,7 +1561,7 @@ public final class DataDefaultSource implements DataSource, Function<Class, Enti
|
||||
final SelectColumn sels = selects;
|
||||
final List<T> list = new ArrayList();
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, info);
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, joinTabalis, new HashSet<>(), info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(info, joinTabalis);
|
||||
final String sql = "SELECT a.* FROM " + info.getTable(node) + " a" + (join == null ? "" : join)
|
||||
+ ((where == null || where.length() == 0) ? "" : (" WHERE " + where)) + info.createSQLOrderby(flipper);
|
||||
|
||||
@@ -243,7 +243,7 @@ public class FilterJoinNode extends FilterNode {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final Map<Class, String> joinTabalis, final EntityInfo<T> info) {
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
||||
boolean morejoin = false;
|
||||
if (this.joinEntity == null) {
|
||||
if (this.joinClass != null) this.joinEntity = func.apply(this.joinClass);
|
||||
@@ -261,7 +261,8 @@ public class FilterJoinNode extends FilterNode {
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (this.joinClass != null) {
|
||||
sb.append(createElementSQLJoin(joinTabalis, info, this));
|
||||
CharSequence cs = createElementSQLJoin(joinTabalis, haset, info, this);
|
||||
if (cs != null) sb.append(cs);
|
||||
}
|
||||
if (morejoin) {
|
||||
Set<Class> set = new HashSet<>();
|
||||
@@ -270,7 +271,7 @@ public class FilterJoinNode extends FilterNode {
|
||||
if (node instanceof FilterJoinNode) {
|
||||
FilterJoinNode joinNode = ((FilterJoinNode) node);
|
||||
if (!set.contains(joinNode.joinClass)) {
|
||||
CharSequence cs = createElementSQLJoin(joinTabalis, info, joinNode);
|
||||
CharSequence cs = createElementSQLJoin(joinTabalis, haset, info, joinNode);
|
||||
if (cs != null) {
|
||||
sb.append(cs);
|
||||
set.add(joinNode.joinClass);
|
||||
@@ -282,8 +283,8 @@ public class FilterJoinNode extends FilterNode {
|
||||
return sb;
|
||||
}
|
||||
|
||||
private static CharSequence createElementSQLJoin(final Map<Class, String> joinTabalis, final EntityInfo info, final FilterJoinNode node) {
|
||||
if (node.joinClass == null) return null;
|
||||
private static CharSequence createElementSQLJoin(final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo info, final FilterJoinNode node) {
|
||||
if (node.joinClass == null || haset.contains(joinTabalis.get(node.joinClass))) return null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String[] joinColumns = node.joinColumns;
|
||||
int pos = joinColumns[0].indexOf('=');
|
||||
@@ -293,6 +294,7 @@ public class FilterJoinNode extends FilterNode {
|
||||
pos = joinColumns[i].indexOf('=');
|
||||
sb.append(" AND ").append(info.getSQLColumn("a", pos > 0 ? joinColumns[i].substring(0, pos) : joinColumns[i])).append(" = ").append(node.joinEntity.getSQLColumn(joinTabalis.get(node.joinClass), pos > 0 ? joinColumns[i].substring(pos + 1) : joinColumns[i]));
|
||||
}
|
||||
if (haset != null) haset.add(joinTabalis.get(node.joinClass));
|
||||
return sb;
|
||||
}
|
||||
|
||||
|
||||
@@ -178,11 +178,11 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则
|
||||
*
|
||||
* @return SQL的join语句 不存在返回null
|
||||
*/
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final Map<Class, String> joinTabalis, final EntityInfo<T> info) {
|
||||
protected <T> CharSequence createSQLJoin(final Function<Class, EntityInfo> func, final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
||||
if (joinTabalis == null || this.nodes == null) return null;
|
||||
StringBuilder sb = null;
|
||||
for (FilterNode node : this.nodes) {
|
||||
CharSequence cs = node.createSQLJoin(func, joinTabalis, info);
|
||||
CharSequence cs = node.createSQLJoin(func, joinTabalis, haset, info);
|
||||
if (cs == null) continue;
|
||||
if (sb == null) sb = new StringBuilder();
|
||||
sb.append(cs);
|
||||
|
||||
@@ -40,8 +40,8 @@ public class FilterNodeTest {
|
||||
System.out.println("bean.string = " + beanNode);
|
||||
Map<Class, String> nodeJoinTabalis = node.getJoinTabalis();
|
||||
Map<Class, String> beanJoinTabalis = beanNode.getJoinTabalis();
|
||||
CharSequence nodeJoinsql = node.createSQLJoin(func, nodeJoinTabalis, carEntity);
|
||||
CharSequence beanJoinsql = beanNode.createSQLJoin(func, beanJoinTabalis, carEntity);
|
||||
CharSequence nodeJoinsql = node.createSQLJoin(func, nodeJoinTabalis, new HashSet<>(), carEntity);
|
||||
CharSequence beanJoinsql = beanNode.createSQLJoin(func, beanJoinTabalis, new HashSet<>(), carEntity);
|
||||
CharSequence nodeWhere = node.createSQLExpress(carEntity, nodeJoinTabalis);
|
||||
CharSequence beanWhere = beanNode.createSQLExpress(carEntity, beanJoinTabalis);
|
||||
System.out.println("node.sql = SELECT a.* FROM " + CarTestTable.class.getSimpleName().toLowerCase() + " a" + (nodeJoinsql == null ? "" : nodeJoinsql) + " WHERE " + nodeWhere);
|
||||
|
||||
Reference in New Issue
Block a user