优化改版

master
wangbing 5 years ago
parent 2c7f0fb3f0
commit 733f0db570

@ -123,7 +123,7 @@ public class ObjectClient extends Client {
return 0;
}
public <T> int delete(Class<T> poClass, String... wheres) throws SQLException, ClassNotFoundException {
public <T> int delete(Class<T> poClass, Where where) throws SQLException, ClassNotFoundException {
try {
Class aClass = classMap.get(poClass.getName());
if (aClass == null) {
@ -132,16 +132,9 @@ public class ObjectClient extends Client {
StringBuffer sql = new StringBuffer();
sql.append("DELETE FROM ");
sql.append(aClass.getSimpleName());
if (wheres.length > 0) {
sql.append(" WHERE ");
for (int i = 0; i < wheres.length; i++) {
String where = wheres[i];
sql.append(where);
sql.append(i != wheres.length - 1 ? " AND " : "");
}
}
return executeUpdate(sql.toString());
sql.append(where.getSql());
System.out.println("SQL ==> " + sql.toString());
return executeUpdate(sql.toString(), where.getArgs());
}
} finally {
destroyed();
@ -149,7 +142,7 @@ public class ObjectClient extends Client {
return 0;
}
public <T> int update(Class<T> poClass, T po, String... wheres) throws SQLException, ClassNotFoundException {
public <T> int update(Class<T> poClass, T po, Where where) throws SQLException, ClassNotFoundException {
try {
Class aClass = classMap.get(poClass.getName());
if (aClass == null) {
@ -175,17 +168,11 @@ public class ObjectClient extends Client {
}
}
if (wheres.length > 0) {
sql.append(" WHERE ");
for (int i = 0; i < wheres.length; i++) {
String where = wheres[i];
sql.append(where);
sql.append(i != wheres.length - 1 ? " AND " : "");
}
}
// 条件
sql.append(where.getSql());
System.out.println("SQL ==> " + sql.toString());
return executeUpdate(sql.toString(), values);
return executeUpdate(sql.toString(), concat(values, where.getArgs()));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
@ -195,7 +182,7 @@ public class ObjectClient extends Client {
return 0;
}
public <T> List<T> select(Class<T> poClass, int pageNumber, int pageSize, T po, String... wheres) throws SQLException, ClassNotFoundException {
public <T> List<T> select(Class<T> poClass, Where where, int pageNumber, int pageSize) throws SQLException, ClassNotFoundException {
ArrayList<T> list = new ArrayList<>();
try {
Class aClass = classMap.get(poClass.getName());
@ -207,8 +194,6 @@ public class ObjectClient extends Client {
//获取字段列表
List<Field> fs = getFields(poClass);
List<String> poWhere = new ArrayList();
List<Object> args = new ArrayList();
for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i);
@ -216,28 +201,13 @@ 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 (poWhere.size() + wheres.length > 0) {
sql.append(" WHERE ");
for (int i = 0; i < poWhere.size(); i++) {
String where = wheres[i];
sql.append(where);
sql.append(i != wheres.length - 1 ? " AND " : "");
}
}
// 条件
sql.append(where.getSql());
//分页参数
if (pageSize > 0) {
@ -245,10 +215,8 @@ public class ObjectClient extends Client {
}
System.out.println("SQL ==> " + sql.toString());
list.addAll(executeQuery(poClass, sql.toString(), args));
list.addAll(executeQuery(poClass, sql.toString(), where.getArgs()));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} finally {
destroyed();
}
@ -339,4 +307,11 @@ public class ObjectClient extends Client {
}
return fs;
}
private <T> T[] concat(T[] arr1, T[] arr2) {
List<T> temp = new ArrayList<>();
temp.addAll(Arrays.asList(arr1));
temp.addAll(Arrays.asList(arr2));
return (T[]) temp.toArray();
}
}

@ -4,6 +4,32 @@ import java.util.ArrayList;
import java.util.List;
public class Where {
private String sql;
private Object[] args;
private Where() {
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public Object[] getArgs() {
return args;
}
public void setArgs(Object[] args) {
this.args = args;
}
public Where(String sql, Object[] args) {
this.sql = sql;
this.args = args;
}
public static Builder builder() {
return new Builder();
@ -11,25 +37,58 @@ public class Where {
public static class Builder {
private StringBuilder sb = new StringBuilder();
private List<Object> args = new ArrayList<>();
private List<Object> argsList = new ArrayList<>();
public Builder eq(boolean condition,String name, Object value) {
if (condition){
sb.append(name).append("=? ");
public Builder eq(String name, Object value) {
return eq(true, name, value);
}
return this;
public Builder like(String name, Object value) {
return like(true, name, value);
}
public Builder like(boolean condition,String name, Object value) {
public Builder isNull(String name, Object value) {
return isNull(true, name, value);
}
public Builder isNotNull(String name, Object value) {
return isNotNull(true, name, value);
}
public Builder eq(boolean condition, String name, Object value) {
if (condition) {
sb.append(sb.length() > 0 ? " and " : " where ").append(name).append(" = ? ");
argsList.add(value);
}
return this;
}
public Builder isNull(boolean condition,String name, Object value) {
public Builder like(boolean condition, String name, Object value) {
if (condition) {
sb.append(sb.length() > 0 ? " and " : " where ").append(name).append("like ?");
argsList.add(value);
}
return this;
}
public Builder isNull(boolean condition, String name, Object value) {
if (condition) {
sb.append(sb.length() > 0 ? " and " : " where ").append(name).append("is null");
argsList.add(value);
}
return this;
}
public Builder isNotNull(boolean condition, String name, Object value) {
if (condition) {
sb.append(sb.length() > 0 ? " and " : " where ").append(name).append("is not null");
argsList.add(value);
}
return this;
}
public Where build() {
return new Where(sb.toString(), argsList.toArray());
}
}
}

@ -1,4 +1,5 @@
import xyz.wbsite.wsqlite.ObjectClient;
import xyz.wbsite.wsqlite.Where;
import xyz.wbsite.wsqlite.entity.Example;
import java.io.File;
@ -29,7 +30,8 @@ public class WsqliteTest {
h.insert(Example.class, example);
System.out.println("测试 select");
List<Example> select = h.select(Example.class, 1, 10);
Where where = Where.builder().eq("S", "wangbing").build();
List<Example> select = h.select(Example.class, where, 1, 10);
System.out.println(select.size());
System.out.println("测试 update");
@ -43,11 +45,12 @@ public class WsqliteTest {
example.setF1(0.1f);
example.setD1(0.1);
example.setDate(new Date());
int update = h.update(Example.class, example);
int update = h.update(Example.class, example, Where.builder().eq("S", "wangbing").build());
System.out.println(update);
System.out.println("测试 delete");
int delete = h.delete(Example.class, "s = 'wangbing'");
Where build = Where.builder().eq("S", "wangbing").build();
int delete = h.delete(Example.class, build);
System.out.println(delete);
} catch (ClassNotFoundException e) {

Loading…
Cancel
Save

Powered by TurnKey Linux.