0.0.1-SNAPSHOT
wangbing 5 years ago
parent 7c07a55bad
commit 38472bcbb6

@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import xyz.wbsite.wsqlite.ObjectClient; import xyz.wbsite.wsqlite.ObjectClient;
import xyz.wbsite.wsqlite.Where;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -216,7 +217,7 @@ public class AjaxController {
private BaseResponse loadPort(String jsonString, Token token) { private BaseResponse loadPort(String jsonString, Token token) {
PortLoadResponse response = new PortLoadResponse(); PortLoadResponse response = new PortLoadResponse();
try { try {
List<Service> select = objectClient.select(Service.class, 1, 0); List<Service> select = objectClient.select(Service.class, Where.builder().build(), 1, 0);
for (Service service : select) { for (Service service : select) {
MappingFindRequest mappingFindRequest = new MappingFindRequest(); MappingFindRequest mappingFindRequest = new MappingFindRequest();

@ -10,6 +10,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import xyz.wbsite.wsqlite.ObjectClient; import xyz.wbsite.wsqlite.ObjectClient;
import xyz.wbsite.wsqlite.Where;
import java.io.File; import java.io.File;
import java.sql.SQLException; import java.sql.SQLException;
@ -39,7 +40,7 @@ public class SqliteConfig {
objects.add(Service.class); objects.add(Service.class);
ObjectClient objectClient = new ObjectClient(new File(dbpath, "data.db"), objects); ObjectClient objectClient = new ObjectClient(new File(dbpath, "data.db"), objects);
List<Service> select = objectClient.select(Service.class, 1, 1); List<Service> select = objectClient.select(Service.class, Where.builder().build(),1, 1);
if (select.size() == 0 && objectClient.insert(Service.class, new Service(IDgenerator.nextId(), "8888", "默认端口")) != 1) { if (select.size() == 0 && objectClient.insert(Service.class, new Service(IDgenerator.nextId(), "8888", "默认端口")) != 1) {
throw new RuntimeException("Nginx default port 8888 init failed."); throw new RuntimeException("Nginx default port 8888 init failed.");
} }

@ -18,6 +18,7 @@ import com.example.module.admin.rsp.MappingUpdateResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import xyz.wbsite.wsqlite.ObjectClient; import xyz.wbsite.wsqlite.ObjectClient;
import xyz.wbsite.wsqlite.Where;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Date; import java.util.Date;
@ -51,20 +52,6 @@ public class MappingManagerImpl implements MappingManager {
return response; return response;
} }
try {
Mapping where = new Mapping();
where.setContext(request.getContext());
List<Mapping> 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(); long id = IDgenerator.nextId();
Mapping entity = MapperUtil.map(request, Mapping.class); Mapping entity = MapperUtil.map(request, Mapping.class);
entity.setId(id); entity.setId(id);
@ -100,7 +87,7 @@ public class MappingManagerImpl implements MappingManager {
} }
try { 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); response.setResult((long) update);
} catch (SQLException | ClassNotFoundException e) { } catch (SQLException | ClassNotFoundException e) {
response.addError(ErrorType.BUSINESS_ERROR, "删除错误"); response.addError(ErrorType.BUSINESS_ERROR, "删除错误");
@ -128,7 +115,7 @@ public class MappingManagerImpl implements MappingManager {
Mapping mapping = MapperUtil.map(request, Mapping.class); Mapping mapping = MapperUtil.map(request, Mapping.class);
try { 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); response.setResult((long) update);
} catch (SQLException | ClassNotFoundException e) { } catch (SQLException | ClassNotFoundException e) {
response.addError(ErrorType.BUSINESS_ERROR, "更新错误"); response.addError(ErrorType.BUSINESS_ERROR, "更新错误");
@ -153,7 +140,7 @@ public class MappingManagerImpl implements MappingManager {
} }
try { try {
List<Mapping> select = objectClient.select(Mapping.class, 1, 0, "SERVICEID=" + request.getServiceId()); List<Mapping> select = objectClient.select(Mapping.class, Where.builder().build(), 1, 0);
response.setResult(select); response.setResult(select);
} catch (SQLException | ClassNotFoundException e) { } catch (SQLException | ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();

@ -241,7 +241,7 @@
<div class="message">您没有足够的权限哦!</div> <div class="message">您没有足够的权限哦!</div>
<div class="message2">您正在试图访问一个没有事先授权的页面.或登录已失效。</div> <div class="message2">您正在试图访问一个没有事先授权的页面.或登录已失效。</div>
<div class="message3" id="timer">5 秒后自动跳转登录页</div> <div class="message3" id="timer">5 秒后自动跳转登录页</div>
<a class="login" href="${Uri.getUrl("/login")}">立即跳转</a> <a class="login" href="${Uri.getUrl("/login.htm")}">立即跳转</a>
</div> </div>
</div> </div>

@ -5,6 +5,7 @@ import xyz.wbsite.wsqlite.anonation.TableField;
import java.io.File; import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/** /**
@ -101,7 +102,8 @@ public class ObjectClient extends Client {
f.setAccessible(true); f.setAccessible(true);
fieldsSql.append(f.getName().toUpperCase()); fieldsSql.append(f.getName().toUpperCase());
valueSql.append("?"); valueSql.append("?");
values[i] = f.get(po); Object o = f.get(po);
values[i] = o;
if (i != fs.size() - 1) { if (i != fs.size() - 1) {
fieldsSql.append(","); fieldsSql.append(",");
valueSql.append(","); valueSql.append(",");
@ -123,7 +125,7 @@ public class ObjectClient extends Client {
return 0; 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 { try {
Class aClass = classMap.get(poClass.getName()); Class aClass = classMap.get(poClass.getName());
if (aClass == null) { if (aClass == null) {
@ -132,16 +134,9 @@ public class ObjectClient extends Client {
StringBuffer sql = new StringBuffer(); StringBuffer sql = new StringBuffer();
sql.append("DELETE FROM "); sql.append("DELETE FROM ");
sql.append(aClass.getSimpleName()); sql.append(aClass.getSimpleName());
sql.append(where.getSql());
if (wheres.length > 0) { System.out.println("SQL ==> " + sql.toString());
sql.append(" WHERE "); return executeUpdate(sql.toString(), where.getArgs());
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());
} }
} finally { } finally {
destroyed(); destroyed();
@ -149,7 +144,7 @@ public class ObjectClient extends Client {
return 0; 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 { try {
Class aClass = classMap.get(poClass.getName()); Class aClass = classMap.get(poClass.getName());
if (aClass == null) { if (aClass == null) {
@ -175,17 +170,11 @@ public class ObjectClient extends Client {
} }
} }
if (wheres.length > 0) { // 条件
sql.append(" WHERE "); sql.append(where.getSql());
for (int i = 0; i < wheres.length; i++) {
String where = wheres[i];
sql.append(where);
sql.append(i != wheres.length - 1 ? " AND " : "");
}
}
System.out.println("SQL ==> " + sql.toString()); System.out.println("SQL ==> " + sql.toString());
return executeUpdate(sql.toString(), values); return executeUpdate(sql.toString(), concat(values, where.getArgs()));
} }
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
@ -195,7 +184,7 @@ public class ObjectClient extends Client {
return 0; 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<>(); ArrayList<T> list = new ArrayList<>();
try { try {
Class aClass = classMap.get(poClass.getName()); Class aClass = classMap.get(poClass.getName());
@ -207,8 +196,6 @@ public class ObjectClient extends Client {
//获取字段列表 //获取字段列表
List<Field> fs = getFields(poClass); List<Field> fs = getFields(poClass);
List<String> poWhere = new ArrayList();
List<Object> args = new ArrayList();
for (int i = 0; i < fs.size(); i++) { for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i); Field f = fs.get(i);
@ -216,28 +203,13 @@ public class ObjectClient extends Client {
if (i != fs.size() - 1) { if (i != fs.size() - 1) {
sql.append(","); 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(" FROM ");
sql.append(aClass.getSimpleName()); sql.append(aClass.getSimpleName());
poWhere.addAll(Arrays.asList(wheres)); // 条件
sql.append(where.getSql());
//条件参数
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 " : "");
}
}
//分页参数 //分页参数
if (pageSize > 0) { if (pageSize > 0) {
@ -245,10 +217,8 @@ public class ObjectClient extends Client {
} }
System.out.println("SQL ==> " + sql.toString()); 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 { } finally {
destroyed(); destroyed();
} }
@ -310,7 +280,7 @@ public class ObjectClient extends Client {
byte[] v = resultSet.getBytes(f.getName()); byte[] v = resultSet.getBytes(f.getName());
f.set(o, v); f.set(o, v);
} else if (f.getType() == Date.class) { } else if (f.getType() == Date.class) {
Date v = resultSet.getDate(f.getName()); Date v = resultSet.getTimestamp(f.getName());
f.set(o, v); f.set(o, v);
} else { } else {
String v = resultSet.getString(f.getName()); String v = resultSet.getString(f.getName());
@ -339,4 +309,11 @@ public class ObjectClient extends Client {
} }
return fs; 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();
}
} }

@ -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<Object> 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());
}
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.