From 38472bcbb6f474deaf2d9a422ec4f22b00d52074 Mon Sep 17 00:00:00 2001 From: wangbing <1919101440@qq.com> Date: Tue, 15 Oct 2019 22:58:34 +0800 Subject: [PATCH] aaaa --- .../com/example/action/AjaxController.java | 3 +- .../java/com/example/config/SqliteConfig.java | 3 +- .../module/admin/mgr/MappingManagerImpl.java | 21 +---- admin/src/main/resources/templates/403.ftl | 2 +- .../java/xyz/wbsite/wsqlite/ObjectClient.java | 69 +++++--------- .../main/java/xyz/wbsite/wsqlite/Where.java | 94 +++++++++++++++++++ 6 files changed, 126 insertions(+), 66 deletions(-) create mode 100644 wsqlite/src/main/java/xyz/wbsite/wsqlite/Where.java diff --git a/admin/src/main/java/com/example/action/AjaxController.java b/admin/src/main/java/com/example/action/AjaxController.java index 47d55d2..4ffeb47 100644 --- a/admin/src/main/java/com/example/action/AjaxController.java +++ b/admin/src/main/java/com/example/action/AjaxController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import xyz.wbsite.wsqlite.ObjectClient; +import xyz.wbsite.wsqlite.Where; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -216,7 +217,7 @@ public class AjaxController { private BaseResponse loadPort(String jsonString, Token token) { PortLoadResponse response = new PortLoadResponse(); try { - List select = objectClient.select(Service.class, 1, 0); + List select = objectClient.select(Service.class, Where.builder().build(), 1, 0); for (Service service : select) { MappingFindRequest mappingFindRequest = new MappingFindRequest(); diff --git a/admin/src/main/java/com/example/config/SqliteConfig.java b/admin/src/main/java/com/example/config/SqliteConfig.java index 04707a4..0121aad 100644 --- a/admin/src/main/java/com/example/config/SqliteConfig.java +++ b/admin/src/main/java/com/example/config/SqliteConfig.java @@ -10,6 +10,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; import xyz.wbsite.wsqlite.ObjectClient; +import xyz.wbsite.wsqlite.Where; import java.io.File; import java.sql.SQLException; @@ -39,7 +40,7 @@ public class SqliteConfig { objects.add(Service.class); ObjectClient objectClient = new ObjectClient(new File(dbpath, "data.db"), objects); - List select = objectClient.select(Service.class, 1, 1); + List select = objectClient.select(Service.class, Where.builder().build(),1, 1); if (select.size() == 0 && objectClient.insert(Service.class, new Service(IDgenerator.nextId(), "8888", "默认端口")) != 1) { throw new RuntimeException("Nginx default port 8888 init failed."); } diff --git a/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java b/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java index e3e0df1..d5ec10d 100644 --- a/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java +++ b/admin/src/main/java/com/example/module/admin/mgr/MappingManagerImpl.java @@ -18,6 +18,7 @@ import com.example.module.admin.rsp.MappingUpdateResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import xyz.wbsite.wsqlite.ObjectClient; +import xyz.wbsite.wsqlite.Where; import java.sql.SQLException; import java.util.Date; @@ -51,20 +52,6 @@ public class MappingManagerImpl implements MappingManager { return response; } - try { - Mapping where = new Mapping(); - where.setContext(request.getContext()); - List select = objectClient.select(Mapping.class, 1, 0, "SERVICEID = " + request.getServiceId()+" AND CONTEXT =" +request.getContext()); - - if (select.size() > 0) { - - } - - } catch (SQLException | ClassNotFoundException e) { - response.addError(ErrorType.BUSINESS_ERROR, "Sqlite错误"); - return response; - } - long id = IDgenerator.nextId(); Mapping entity = MapperUtil.map(request, Mapping.class); entity.setId(id); @@ -100,7 +87,7 @@ public class MappingManagerImpl implements MappingManager { } try { - int update = objectClient.delete(Mapping.class, "ID = " + request.getId()); + int update = objectClient.delete(Mapping.class, Where.builder().eq("ID", request.getId()).build()); response.setResult((long) update); } catch (SQLException | ClassNotFoundException e) { response.addError(ErrorType.BUSINESS_ERROR, "删除错误"); @@ -128,7 +115,7 @@ public class MappingManagerImpl implements MappingManager { Mapping mapping = MapperUtil.map(request, Mapping.class); try { - int update = objectClient.update(Mapping.class, mapping, "ID = " + mapping.getId()); + int update = objectClient.update(Mapping.class, mapping, Where.builder().eq("ID", request.getId()).build()); response.setResult((long) update); } catch (SQLException | ClassNotFoundException e) { response.addError(ErrorType.BUSINESS_ERROR, "更新错误"); @@ -153,7 +140,7 @@ public class MappingManagerImpl implements MappingManager { } try { - List select = objectClient.select(Mapping.class, 1, 0, "SERVICEID=" + request.getServiceId()); + List select = objectClient.select(Mapping.class, Where.builder().build(), 1, 0); response.setResult(select); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); diff --git a/admin/src/main/resources/templates/403.ftl b/admin/src/main/resources/templates/403.ftl index 82dc04a..42757d8 100644 --- a/admin/src/main/resources/templates/403.ftl +++ b/admin/src/main/resources/templates/403.ftl @@ -241,7 +241,7 @@
您没有足够的权限哦!
您正在试图访问一个没有事先授权的页面.或登录已失效。
5 秒后自动跳转登录页
- + diff --git a/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java b/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java index 069b8ca..6d643cf 100644 --- a/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java +++ b/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java @@ -5,6 +5,7 @@ import xyz.wbsite.wsqlite.anonation.TableField; import java.io.File; import java.lang.reflect.Field; import java.sql.SQLException; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -101,7 +102,8 @@ public class ObjectClient extends Client { f.setAccessible(true); fieldsSql.append(f.getName().toUpperCase()); valueSql.append("?"); - values[i] = f.get(po); + Object o = f.get(po); + values[i] = o; if (i != fs.size() - 1) { fieldsSql.append(","); valueSql.append(","); @@ -123,7 +125,7 @@ public class ObjectClient extends Client { return 0; } - public int delete(Class poClass, String... wheres) throws SQLException, ClassNotFoundException { + public int delete(Class poClass, Where where) throws SQLException, ClassNotFoundException { try { Class aClass = classMap.get(poClass.getName()); if (aClass == null) { @@ -132,16 +134,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 +144,7 @@ public class ObjectClient extends Client { return 0; } - public int update(Class poClass, T po, String... wheres) throws SQLException, ClassNotFoundException { + public int update(Class poClass, T po, Where where) throws SQLException, ClassNotFoundException { try { Class aClass = classMap.get(poClass.getName()); if (aClass == null) { @@ -175,17 +170,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 +184,7 @@ public class ObjectClient extends Client { return 0; } - public List select(Class poClass, int pageNumber, int pageSize, T po, String... wheres) throws SQLException, ClassNotFoundException { + public List select(Class poClass, Where where, int pageNumber, int pageSize) throws SQLException, ClassNotFoundException { ArrayList list = new ArrayList<>(); try { Class aClass = classMap.get(poClass.getName()); @@ -207,8 +196,6 @@ 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); @@ -216,28 +203,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 +217,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(); } @@ -310,7 +280,7 @@ public class ObjectClient extends Client { byte[] v = resultSet.getBytes(f.getName()); f.set(o, v); } else if (f.getType() == Date.class) { - Date v = resultSet.getDate(f.getName()); + Date v = resultSet.getTimestamp(f.getName()); f.set(o, v); } else { String v = resultSet.getString(f.getName()); @@ -339,4 +309,11 @@ public class ObjectClient extends Client { } return fs; } + + private T[] concat(T[] arr1, T[] arr2) { + List temp = new ArrayList<>(); + temp.addAll(Arrays.asList(arr1)); + temp.addAll(Arrays.asList(arr2)); + return (T[]) temp.toArray(); + } } \ No newline at end of file diff --git a/wsqlite/src/main/java/xyz/wbsite/wsqlite/Where.java b/wsqlite/src/main/java/xyz/wbsite/wsqlite/Where.java new file mode 100644 index 0000000..34effa6 --- /dev/null +++ b/wsqlite/src/main/java/xyz/wbsite/wsqlite/Where.java @@ -0,0 +1,94 @@ +package xyz.wbsite.wsqlite; + +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(); + } + + public static class Builder { + private StringBuilder sb = new StringBuilder(); + private List argsList = new ArrayList<>(); + + public Builder eq(String name, Object value) { + return eq(true, name, value); + } + + public Builder like(String name, Object value) { + return like(true, name, 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 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()); + } + } +}