This commit is contained in:
Redkale
2016-10-10 09:50:56 +08:00
parent fb51997c6b
commit ddef9018e2
2 changed files with 5 additions and 5 deletions

View File

@@ -35,9 +35,9 @@ public @interface FilterJoinColumn {
* 例如: SELECT a.* FROM user a INNER JOIN record b ON a.userid = b.userid AND a.usertype = b.usertype * 例如: SELECT a.* FROM user a INNER JOIN record b ON a.userid = b.userid AND a.usertype = b.usertype
* 那么注解为: @FilterJoinColumn(table = Record.class, columns = {"userid", "usertype"}) * 那么注解为: @FilterJoinColumn(table = Record.class, columns = {"userid", "usertype"})
* <p> * <p>
* columns中的字段名如果不一致可以将两个字段名用短横-连接成一个字段名 * columns中的字段名如果不一致可以将两个字段名用=连接成一个字段名
* 例如: SELECT a.* FROM user a INNER JOIN record b ON a.userid = b.buyerid AND a.usertype = b.usertype * 例如: SELECT a.* FROM user a INNER JOIN record b ON a.userid = b.buyerid AND a.usertype = b.usertype
* 那么注解为: &#64;FilterJoinColumn(table = Record.class, columns = {"userid-buyerid", "usertype"}) * 那么注解为: &#64;FilterJoinColumn(table = Record.class, columns = {"userid=buyerid", "usertype"})
* *
* @return 关联字段 * @return 关联字段
*/ */

View File

@@ -130,7 +130,7 @@ public class FilterJoinNode extends FilterNode {
final Predicate<E> inner = filter; final Predicate<E> inner = filter;
final String[][] localJoinColumns = new String[joinColumns.length][2]; final String[][] localJoinColumns = new String[joinColumns.length][2];
for (int i = 0; i < joinColumns.length; i++) { for (int i = 0; i < joinColumns.length; i++) {
int pos = joinColumns[i].indexOf('-'); int pos = joinColumns[i].indexOf('=');
if (pos > 0) { if (pos > 0) {
localJoinColumns[i] = new String[]{joinColumns[i].substring(0, pos), joinColumns[i].substring(pos + 1)}; localJoinColumns[i] = new String[]{joinColumns[i].substring(0, pos), joinColumns[i].substring(pos + 1)};
} else { } else {
@@ -286,11 +286,11 @@ public class FilterJoinNode extends FilterNode {
if (node.joinClass == null) return null; if (node.joinClass == null) return null;
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
String[] joinColumns = node.joinColumns; String[] joinColumns = node.joinColumns;
int pos = joinColumns[0].indexOf('-'); int pos = joinColumns[0].indexOf('=');
sb.append(" INNER JOIN ").append(node.joinEntity.getTable(node)).append(" ").append(joinTabalis.get(node.joinClass)) sb.append(" INNER JOIN ").append(node.joinEntity.getTable(node)).append(" ").append(joinTabalis.get(node.joinClass))
.append(" ON ").append(info.getSQLColumn("a", pos > 0 ? joinColumns[0].substring(0, pos) : joinColumns[0])).append(" = ").append(node.joinEntity.getSQLColumn(joinTabalis.get(node.joinClass), pos > 0 ? joinColumns[0].substring(pos + 1) : joinColumns[0])); .append(" ON ").append(info.getSQLColumn("a", pos > 0 ? joinColumns[0].substring(0, pos) : joinColumns[0])).append(" = ").append(node.joinEntity.getSQLColumn(joinTabalis.get(node.joinClass), pos > 0 ? joinColumns[0].substring(pos + 1) : joinColumns[0]));
for (int i = 1; i < joinColumns.length; i++) { for (int i = 1; i < joinColumns.length; i++) {
pos = joinColumns[i].indexOf('-'); 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])); 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]));
} }
return sb; return sb;