diff --git a/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java b/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java index 3aa10a9..069b8ca 100644 --- a/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java +++ b/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java @@ -195,7 +195,7 @@ public class ObjectClient extends Client { return 0; } - public List select(Class poClass, int pageNumber, int pageSize, String... wheres) throws SQLException, ClassNotFoundException { + public List select(Class poClass, int pageNumber, int pageSize, T po, String... wheres) throws SQLException, ClassNotFoundException { ArrayList list = new ArrayList<>(); try { Class aClass = classMap.get(poClass.getName()); @@ -207,6 +207,8 @@ public class ObjectClient extends Client { //获取字段列表 List fs = getFields(poClass); + List poWhere = new ArrayList(); + List args = new ArrayList(); for (int i = 0; i < fs.size(); i++) { Field f = fs.get(i); @@ -214,15 +216,23 @@ public class ObjectClient extends Client { if (i != fs.size() - 1) { sql.append(","); } + if (po != null) { + if (f.get(po) != null) { + poWhere.add(" " + f.getName().toUpperCase() + " = ? "); + args.add(f.get(po)); + } + } } sql.append(" FROM "); sql.append(aClass.getSimpleName()); + poWhere.addAll(Arrays.asList(wheres)); + //条件参数 - if (wheres.length > 0) { + if (poWhere.size() + wheres.length > 0) { sql.append(" WHERE "); - for (int i = 0; i < wheres.length; i++) { + for (int i = 0; i < poWhere.size(); i++) { String where = wheres[i]; sql.append(where); sql.append(i != wheres.length - 1 ? " AND " : ""); @@ -230,13 +240,15 @@ public class ObjectClient extends Client { } //分页参数 - if(pageSize > 0){ + if (pageSize > 0) { sql.append(" LIMIT " + (pageNumber - 1) + "," + pageSize); } System.out.println("SQL ==> " + sql.toString()); - list.addAll(executeQuery(sql.toString(), poClass)); + list.addAll(executeQuery(poClass, sql.toString(), args)); } + } catch (IllegalAccessException e) { + e.printStackTrace(); } finally { destroyed(); } @@ -252,10 +264,10 @@ public class ObjectClient extends Client { * @throws SQLException * @throws ClassNotFoundException */ - public List executeQuery(String sql, Class poClass) throws SQLException, ClassNotFoundException { + public List executeQuery(Class poClass, String sql, Object... args) throws SQLException, ClassNotFoundException { List rsList = new ArrayList(); try { - resultSet = executeQuery(sql); + resultSet = executeQuery(sql, args); //获取字段列表 List fs = getFields(poClass); diff --git a/src/main/java/xyz/wbsite/wsqlite/Where.java b/src/main/java/xyz/wbsite/wsqlite/Where.java new file mode 100644 index 0000000..c600411 --- /dev/null +++ b/src/main/java/xyz/wbsite/wsqlite/Where.java @@ -0,0 +1,35 @@ +package xyz.wbsite.wsqlite; + +import java.util.ArrayList; +import java.util.List; + +public class Where { + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private StringBuilder sb = new StringBuilder(); + private List args = new ArrayList<>(); + + public Builder eq(boolean condition,String name, Object value) { + if (condition){ + sb.append(name).append("=? "); + } + + return this; + } + + public Builder like(boolean condition,String name, Object value) { + + return this; + } + + public Builder isNull(boolean condition,String name, Object value) { + + return this; + } + + } +}