diff --git a/admin/src/main/java/com/example/config/SqliteConfig.java b/admin/src/main/java/com/example/config/SqliteConfig.java
index d16755b..51dcb4d 100644
--- a/admin/src/main/java/com/example/config/SqliteConfig.java
+++ b/admin/src/main/java/com/example/config/SqliteConfig.java
@@ -1,10 +1,12 @@
package com.example.config;
import com.example.module.admin.ent.Mapping;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
import xyz.wbsite.wsqlite.ObjectClient;
@@ -15,12 +17,13 @@ import java.util.ArrayList;
@Configuration
public class SqliteConfig {
- @Value("${dbpath}")
- public String dbpath;
+ @Autowired
+ public Environment environment;
@Bean
public ObjectClient registry() {
try {
+ String dbpath = environment.getProperty("dbpath");
if (StringUtils.isEmpty(dbpath)) {
ApplicationHome home = new ApplicationHome(getClass());
// 当前运行jar文件
diff --git a/admin/src/main/java/com/example/frame/utils/LocalData.java b/admin/src/main/java/com/example/frame/utils/LocalData.java
index ff1d2c4..0903dfa 100644
--- a/admin/src/main/java/com/example/frame/utils/LocalData.java
+++ b/admin/src/main/java/com/example/frame/utils/LocalData.java
@@ -34,7 +34,7 @@ public class LocalData {
temp.putResource("/index.htm");
temp.putResource("/home.htm");
temp.putResource("/app.htm");
- temp.putResource("ajax.example.example");
+ temp.putResource(".*");
system = new Token();
system.setId(0);
system.setUserId(0);
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 cd584f4..df1f314 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
@@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import xyz.wbsite.wsqlite.ObjectClient;
+import java.sql.SQLException;
+
/**
* MAPPING - 映射
*
@@ -50,7 +52,13 @@ public class MappingManagerImpl implements MappingManager {
long id = IDgenerator.nextId();
Mapping entity = MapperUtil.map(request, Mapping.class);
entity.setId(id);
- objectClient.insert(Mapping.class, entity);
+ try {
+ int insert = objectClient.insert(Mapping.class, entity);
+
+ System.out.println();
+ } catch (SQLException | ClassNotFoundException e) {
+ e.printStackTrace();
+ }
response.setId(id);
return response;
diff --git a/admin/src/main/resources/application-dev.properties b/admin/src/main/resources/application-dev.properties
index 3ba9337..5db2c35 100644
--- a/admin/src/main/resources/application-dev.properties
+++ b/admin/src/main/resources/application-dev.properties
@@ -2,7 +2,7 @@
server.port=8080
server.servlet.context-path=/
spring.mvc.static-path-pattern=/static/**
-spring.resources.static-locations=classpath:static/
+spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.application.name=EXAMPLE-WEB
spring.main.banner-mode=CONSOLE
spring.devtools.restart.enabled=true
@@ -16,7 +16,7 @@ web.welcome.page=/index.htm
# 需要验证授权, 既访问时组装Token
web.url.auth.included=/**
# 不需要验证授权, 或该请求有自己的验证机制
-web.url.auth.excluded=/favicon.ico,/static/**,/api,/login.htm,/app
+web.url.auth.excluded=/favicon.ico,/static/**,/api,/login.htm,/mapping.htm
# 日志配置
logging.path=D://
logging.levels=DEBUG
diff --git a/admin/src/main/resources/static/js/ajax_es6.js b/admin/src/main/resources/static/js/ajax_es6.js
deleted file mode 100644
index e54d836..0000000
--- a/admin/src/main/resources/static/js/ajax_es6.js
+++ /dev/null
@@ -1,135 +0,0 @@
-import axios from 'axios'
-// 创建axios实例
-const service = axios.create({
- baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
- withCredentials: true, // send cookies when cross-domain requests
- method: 'post', // request method
- timeout: 5000 // request timeout
-})
-
-// 添加请求拦截器
-service.interceptors.request.use(config => {
- // 在发送请求之前做些什么
- if (config.url === '/upload') {
- console.log()
- } else {
- console.log()
- }
- return config
-}, error => {
- // 对请求错误做些什么
- return Promise.reject(error)
-})
-
-// 添加响应拦截器
-service.interceptors.response.use(response => {
- // 对响应数据做点什么
- return response
-}, error => {
- // 对响应错误做点什么
- const rsp = { errors: [] }
- if (!error.response) {
- rsp.errors.push({ message: error.message })
- } else {
- switch (error.response.status) {
- case 401:
- rsp.errors.push({ message: '未授权,请登录(401)' })
- break
- case 403:
- rsp.errors.push({ message: '拒绝访问(403)' })
- break
- case 404:
- rsp.errors.push({ message: '请求地址错误(404)' })
- break
- case 408:
- rsp.errors.push({ message: '请求超时(408)' })
- break
- case 500:
- rsp.errors.push({ message: '服务器内部错误(500)' })
- break
- case 501:
- rsp.errors.push({ message: '服务未实现(501)' })
- break
- default:
- rsp.errors.push({ message: '请求错误(' + error.response.status + ')' })
- break
- }
- }
- return Promise.reject(rsp)
-})
-export function jsonRequest(config) {
- return service.request({
- params: {
- method: config.method
- },
- url: '/ajax',
- headers: { 'Content-Type': 'text/plain' },
- data: config.data
- }).then(response => {
- return Promise.resolve(response.data)
- }, response => {
- return Promise.resolve(response)
- })
-}
-export function fileRequest(config) {
- return service.request({
- url: '/upload',
- data: config.data,
- headers: { 'Content-Type': 'multipart/form-data' },
- onUploadProgress: progressEvent => {
- console.log((progressEvent.loaded / progressEvent.total * 100 | 0) + '%')
- }
- }).then(response => {
- return Promise.resolve(response.data)
- }, response => {
- return Promise.resolve(response)
- })
-}
-
-const ajax = {
- example: data => {
- return jsonRequest({
- method: 'ajax.example.example',
- data: data
- })
- },
- fileUpload: file => {
- const fd = new FormData()
- fd.append('file', file)
- return fileRequest({
- data: fd
- })
- },
- mappingCreate: data => {
- return jsonRequest({
- method:'ajax.admin.mapping.create',
- data: JSON.stringify(data),
- })
- },
- mappingDelete: data => {
- return jsonRequest({
- method:'ajax.admin.mapping.delete',
- data: JSON.stringify(data),
- })
- },
- mappingUpdate: data => {
- return jsonRequest({
- method:'ajax.admin.mapping.update',
- data: JSON.stringify(data),
- })
- },
- mappingFind: data => {
- return jsonRequest({
- method:'ajax.admin.mapping.find',
- data: JSON.stringify(data),
- })
- },
- mappingGet: data => {
- return jsonRequest({
- method:'ajax.admin.mapping.get',
- data: JSON.stringify(data),
- })
- },
-}
-
-export default ajax
\ No newline at end of file
diff --git a/admin/src/main/resources/templates/screen/index.ftl b/admin/src/main/resources/templates/screen/index.ftl
index 6509626..a2b9c67 100644
--- a/admin/src/main/resources/templates/screen/index.ftl
+++ b/admin/src/main/resources/templates/screen/index.ftl
@@ -1,4 +1,4 @@
-
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+ 新增
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑资源
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/admin/src/test/resources/application.properties b/admin/src/test/resources/application.properties
index 56fc5aa..a3a2629 100644
--- a/admin/src/test/resources/application.properties
+++ b/admin/src/test/resources/application.properties
@@ -21,18 +21,6 @@ web.url.auth.excluded=/favicon.ico,/static/**,/api,/login.htm
logging.path=D://
logging.levels=DEBUG
logging.config=classpath:logback-config.xml
-# mysql
-spring.datasource.driver-class-name=com.mysql.jdbc.Driver
-spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
-spring.datasource.username=test
-spring.datasource.password=123456
-# mybatis
-mybatis.mapper-locations=classpath:**/mpr/*.xml
-# pagehelper
-pagehelper.autoRuntimeDialect=true
-pagehelper.reasonable=true
-pagehelper.supportMethodsArguments=true
-pagehelper.params=count=countSql
# jackson 相关配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
@@ -60,4 +48,5 @@ spring.freemarker.settings.url_escaping_charset=utf-8
# 文件上传配置
spring.servlet.multipart.resolveLazily=false
spring.servlet.multipart.max-file-size=100MB
-spring.servlet.multipart.max-request-size=100MB
\ No newline at end of file
+spring.servlet.multipart.max-request-size=100MB
+dbpath=
\ No newline at end of file
diff --git a/wsqlite/src/main/java/xyz/wbsite/wsqlite/Client.java b/wsqlite/src/main/java/xyz/wbsite/wsqlite/Client.java
index 1f98fb8..ebc0a78 100644
--- a/wsqlite/src/main/java/xyz/wbsite/wsqlite/Client.java
+++ b/wsqlite/src/main/java/xyz/wbsite/wsqlite/Client.java
@@ -11,7 +11,6 @@ import java.sql.*;
public class Client {
Connection connection;
- Statement statement;
ResultSet resultSet;
String dbFilePath;
@@ -38,7 +37,7 @@ public class Client {
*/
public void execute(String sql) throws SQLException, ClassNotFoundException {
try {
- getStatement().execute(sql);
+ executeUpdate(sql);
} finally {
destroyed();
}
@@ -51,27 +50,61 @@ public class Client {
* @throws SQLException
* @throws ClassNotFoundException
*/
- public ResultSet executeQuery(String sql) throws SQLException, ClassNotFoundException {
- return getStatement().executeQuery(sql);
+ public ResultSet executeQuery(String sql, Object... args) throws SQLException, ClassNotFoundException {
+ PreparedStatement preparedStatement = getConnection().prepareStatement(sql);
+ setArg(preparedStatement, args);
+ return preparedStatement.executeQuery();
}
/**
- * 执行sql更新语句
+ * 执行sql语句
*
- * @param sqls
+ * @param sql
* @throws SQLException
* @throws ClassNotFoundException
*/
- public int executeUpdate(String... sqls) throws SQLException, ClassNotFoundException {
- int count = 0;
+ public int executeUpdate(String sql, Object... args) throws SQLException, ClassNotFoundException {
try {
- for (String sql : sqls) {
- count += getStatement().executeUpdate(sql);
- }
+ PreparedStatement preparedStatement = getConnection().prepareStatement(sql);
+ setArg(preparedStatement, args);
+ return preparedStatement.executeUpdate();
} finally {
destroyed();
}
- return count;
+ }
+
+ private void setArg(PreparedStatement ps, Object... args) throws SQLException {
+ for (int i = 0; i < args.length; i++) {
+ Object arg = args[i];
+
+ if (arg == null) {
+ ps.setNull(i + 1, Types.NULL);
+ } else if (arg instanceof String) {
+ ps.setString(i + 1, (String) arg);
+ } else if (arg instanceof Date) {
+ ps.setDate(i + 1, (Date) arg);
+ } else if (arg instanceof Time) {
+ ps.setTime(i + 1, (Time) arg);
+ } else if (arg instanceof java.util.Date) {
+ ps.setLong(i + 1, ((java.util.Date) arg).getTime());
+ } else if (arg instanceof Boolean) {
+ ps.setBoolean(i + 1, (Boolean) arg);
+ } else if (arg instanceof Byte) {
+ ps.setByte(i + 1, (Byte) arg);
+ } else if (arg instanceof Short) {
+ ps.setShort(i + 1, (Short) arg);
+ } else if (arg instanceof Integer) {
+ ps.setInt(i + 1, (int) arg);
+ } else if (arg instanceof Long) {
+ ps.setLong(i + 1, (long) arg);
+ } else if (arg instanceof Float) {
+ ps.setFloat(i + 1, (float) arg);
+ } else if (arg instanceof Double) {
+ ps.setDouble(i + 1, (double) arg);
+ } else if (arg instanceof byte[]) {
+ ps.setBytes(i + 1, (byte[]) arg);
+ }
+ }
}
/**
@@ -89,16 +122,6 @@ public class Client {
return connection;
}
- /**
- * 获取数据库Statement对象
- */
- Statement getStatement() throws SQLException, ClassNotFoundException {
- if (null == statement) {
- statement = getConnection().createStatement();
- }
- return statement;
- }
-
/**
* 数据库资源关闭和释放
*/
@@ -109,10 +132,6 @@ public class Client {
resultSet = null;
}
- if (null != statement) {
- statement.close();
- statement = null;
- }
if (null != connection) {
connection.close();
connection = null;
diff --git a/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java b/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java
index 8c7da51..4c107c7 100644
--- a/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java
+++ b/wsqlite/src/main/java/xyz/wbsite/wsqlite/ObjectClient.java
@@ -5,10 +5,7 @@ import xyz.wbsite.wsqlite.anonation.TableField;
import java.io.File;
import java.lang.reflect.Field;
import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* xyz.wbsite.wsqlite.Client
@@ -67,6 +64,9 @@ public class ObjectClient extends Client {
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
sql.append(f.getName().toUpperCase());
sql.append(" BLOB,");
+ } else if (f.getType() == Date.class) {
+ sql.append(f.getName().toUpperCase());
+ sql.append(" TIMESTAMP,");
}
}
}
@@ -78,7 +78,7 @@ public class ObjectClient extends Client {
}
}
- public
int insert(Class poClass, T po) {
+ public int insert(Class poClass, T po) throws SQLException, ClassNotFoundException {
try {
Class aClass = classMap.get(poClass.getName());
if (aClass == null) {
@@ -94,39 +94,15 @@ public class ObjectClient extends Client {
StringBuffer fieldsSql = new StringBuffer();
StringBuffer valueSql = new StringBuffer();
+ Object[] values = new Object[fs.size()];
for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i);
f.setAccessible(true);
fieldsSql.append(f.getName().toUpperCase());
-
- Object value = f.get(po);
- if (f.getType() == String.class) {
- valueSql.append("'");
- valueSql.append(value);
- valueSql.append("'");
- } else if (f.getType() == Boolean.class || f.getType() == boolean.class) {
- valueSql.append("'");
- valueSql.append(String.valueOf(value));
- valueSql.append("'");
- } else if (f.getType() == Byte.class || f.getType() == byte.class ||
- f.getType() == Short.class || f.getType() == short.class ||
- f.getType() == Character.class || f.getType() == char.class ||
- f.getType() == Integer.class || f.getType() == int.class ||
- f.getType() == Long.class || f.getType() == long.class) {
- valueSql.append("'");
- valueSql.append(value);
- valueSql.append("'");
- } else if (f.getType() == Float.class || f.getType() == float.class ||
- f.getType() == Double.class || f.getType() == double.class) {
- valueSql.append("'");
- valueSql.append(value);
- valueSql.append("'");
- } else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
- valueSql.append("'");
- valueSql.append(value);
- valueSql.append("'");
- }
+ valueSql.append("?");
+ Object o = f.get(po);
+ values[i] = o;
if (i != fs.size() - 1) {
fieldsSql.append(",");
valueSql.append(",");
@@ -138,14 +114,10 @@ public class ObjectClient extends Client {
sql.append(valueSql);
sql.append(")");
System.out.println("SQL ==> " + sql.toString());
- return executeUpdate(sql.toString());
+ return executeUpdate(sql.toString(), values);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
} finally {
destroyed();
}
@@ -184,47 +156,21 @@ public class ObjectClient extends Client {
if (aClass == null) {
System.err.println(poClass.getName() + " not found.");
} else {
+ //获取字段列表
+ List fs = getFields(poClass);
+
StringBuffer sql = new StringBuffer();
+ Object[] values = new Object[fs.size()];
sql.append("UPDATE ");
sql.append(aClass.getSimpleName());
sql.append(" SET ");
- //获取字段列表
- List fs = getFields(poClass);
-
for (int i = 0; i < fs.size(); i++) {
Field f = fs.get(i);
f.setAccessible(true);
sql.append(f.getName());
- sql.append(" = ");
-
- Object value = f.get(po);
- if (f.getType() == String.class) {
- sql.append("'");
- sql.append(value);
- sql.append("'");
- } else if (f.getType() == Boolean.class || f.getType() == boolean.class) {
- sql.append("'");
- sql.append(String.valueOf(value));
- sql.append("'");
- } else if (f.getType() == Byte.class || f.getType() == byte.class ||
- f.getType() == Short.class || f.getType() == short.class ||
- f.getType() == Character.class || f.getType() == char.class ||
- f.getType() == Integer.class || f.getType() == int.class ||
- f.getType() == Long.class || f.getType() == long.class) {
- sql.append("'");
- sql.append(value);
- sql.append("'");
- } else if (f.getType() == Float.class || f.getType() == float.class ||
- f.getType() == Double.class || f.getType() == double.class) {
- sql.append("'");
- sql.append(value);
- sql.append("'");
- } else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
- sql.append("'");
- sql.append(value);
- sql.append("'");
- }
+ sql.append(" = ?");
+ values[i] = f.get(po);
if (i != fs.size() - 1) {
sql.append(",");
}
@@ -240,7 +186,7 @@ public class ObjectClient extends Client {
}
System.out.println("SQL ==> " + sql.toString());
- return executeUpdate(sql.toString());
+ return executeUpdate(sql.toString(), values);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
@@ -350,9 +296,12 @@ public class ObjectClient extends Client {
} else if (f.getType() == Byte[].class || f.getType() == byte[].class) {
byte[] v = resultSet.getBytes(f.getName());
f.set(o, v);
+ } else if (f.getType() == Date.class) {
+ Date v = resultSet.getDate(f.getName());
+ f.set(o, v);
} else {
- String string = resultSet.getString(f.getName());
- f.set(o, string);
+ String v = resultSet.getString(f.getName());
+ f.set(o, v);
}
}
rsList.add(o);