mirror of
https://github.com/hs-web/hsweb-framework.git
synced 2026-06-20 19:46:05 +08:00
修复mysql兼容问题
This commit is contained in:
@@ -64,7 +64,7 @@ ALTER TABLE `s_template` COMMENT '模板';
|
||||
-- Table structure for S_MODULES
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_modules` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`name` VARCHAR(256) NOT NULL
|
||||
COMMENT '模块名称',
|
||||
@@ -87,7 +87,7 @@ ALTER TABLE `s_modules` COMMENT '系统模块';
|
||||
|
||||
|
||||
CREATE TABLE `s_module_meta` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`key` VARCHAR(256) NOT NULL
|
||||
COMMENT '标识',
|
||||
@@ -118,7 +118,7 @@ INSERT INTO `s_modules` VALUES ('s_logger', '日志管理', 'admin/logger/list.h
|
||||
-- Table structure for S_RESOURCES
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_resources` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`name` VARCHAR(256) NOT NULL
|
||||
COMMENT '资源名称',
|
||||
@@ -159,7 +159,7 @@ ALTER TABLE `s_resources` COMMENT '资源表';
|
||||
-- Table structure for S_ROLE
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_role` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`name` VARCHAR(256) NOT NULL
|
||||
COMMENT '角色名称',
|
||||
@@ -179,7 +179,7 @@ INSERT INTO `s_role` VALUES ('admin', '超级管理员', NULL, '初始数据');
|
||||
-- Table structure for S_ROLE_MODULES
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_role_modules` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`module_id` VARCHAR(256) NOT NULL
|
||||
COMMENT '模块id',
|
||||
@@ -194,7 +194,7 @@ ALTER TABLE `s_role_modules` COMMENT '角色模块绑定表';
|
||||
-- Table structure for S_SCRIPT
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_script` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'uid',
|
||||
`name` VARCHAR(256) NOT NULL
|
||||
COMMENT '脚本名称',
|
||||
@@ -219,7 +219,7 @@ ALTER TABLE `s_script` COMMENT '脚本';
|
||||
-- Table structure for S_USER
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_user` (
|
||||
`u_id` VARCHAR(64) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'ID',
|
||||
`username` VARCHAR(64) NOT NULL
|
||||
COMMENT '用户名',
|
||||
@@ -245,12 +245,12 @@ ALTER TABLE `s_user` COMMENT '用户表';
|
||||
-- ----------------------------
|
||||
-- Records of S_USER
|
||||
-- ----------------------------
|
||||
INSERT INTO `s_user` VALUES ('admin', 'admin', '23ec59e119da971084cbd0ba72d230a0', '超级管理员', NULL, NULL, '1', TO_datetime('2015-11-19 12:10:36', 'YYYY-MM-DD HH24:MI:SS'), NULL, NULL);
|
||||
INSERT INTO `s_user` VALUES ('admin', 'admin', '23ec59e119da971084cbd0ba72d230a0', '超级管理员', NULL, NULL, '1', '1991-08-11 12:10:36', NULL, NULL);
|
||||
-- ----------------------------
|
||||
-- Table structure for S_USER_ROLE
|
||||
-- ----------------------------
|
||||
CREATE TABLE `s_user_role` (
|
||||
`u_id` VARCHAR(256) NOT NULL PRIMARY KEY
|
||||
`u_id` VARCHAR(32) NOT NULL PRIMARY KEY
|
||||
COMMENT 'UID',
|
||||
`user_id` VARCHAR(256) NOT NULL
|
||||
COMMENT '用户ID',
|
||||
|
||||
@@ -32,9 +32,6 @@ public class FormController extends GenericController<Form, String> {
|
||||
@Resource
|
||||
private FormService formService;
|
||||
|
||||
@Resource
|
||||
private HistoryService historyService;
|
||||
|
||||
@Override
|
||||
public FormService getService() {
|
||||
return this.formService;
|
||||
|
||||
@@ -24,21 +24,20 @@ import java.util.*;
|
||||
*/
|
||||
public class DefaultSqlParamBuilder {
|
||||
|
||||
public String getQuoteStart() {
|
||||
return "\"";
|
||||
}
|
||||
|
||||
public String getQuoteEnd() {
|
||||
return "\"";
|
||||
}
|
||||
|
||||
public Dialect getDialect() {
|
||||
return Dialect.ORACLE;
|
||||
}
|
||||
|
||||
public boolean filedToUpperCase() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected static final Map<Class, String> simpleName = new HashMap<>();
|
||||
|
||||
private static DefaultSqlParamBuilder instance = new DefaultSqlParamBuilder();
|
||||
protected PropertyUtilsBean propertyUtils = BeanUtilsBean.getInstance().getPropertyUtils();
|
||||
|
||||
protected PropertyUtilsBean propertyUtils = BeanUtilsBean.getInstance().getPropertyUtils();
|
||||
|
||||
public DefaultSqlParamBuilder() {
|
||||
simpleName.put(Integer.class, "int");
|
||||
simpleName.put(Byte.class, "byte");
|
||||
@@ -124,7 +123,10 @@ public class DefaultSqlParamBuilder {
|
||||
listData = Arrays.asList(param.getData());
|
||||
}
|
||||
param.setData(listData);
|
||||
String fields = mappings.keySet().stream().reduce((f1, f2) -> f1 + "," + f2).get();
|
||||
String fields = mappings.keySet().stream()
|
||||
.map(str -> new SqlAppender().add(getDialect().getQuoteStart(), filedToUpperCase() ? str.toUpperCase() : str, getDialect().getQuoteEnd()).toString())
|
||||
.reduce((f1, f2) -> new SqlAppender().add(f1, ",", f2)
|
||||
.toString()).get();
|
||||
//批量
|
||||
int size = listData.size();
|
||||
SqlAppender batchSql = new SqlAppender();
|
||||
@@ -164,11 +166,11 @@ public class DefaultSqlParamBuilder {
|
||||
if (!appender.isEmpty())
|
||||
appender.add(",");
|
||||
if (!k.contains(".") || k.split("[.]")[0].equals(tableName)) {
|
||||
appender.add(tableName, ".", k, " as ");
|
||||
appender.add(tableName, ".", getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), " as ");
|
||||
} else {
|
||||
appender.add(k, " as ");
|
||||
appender.add(getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), " as ");
|
||||
}
|
||||
appender.addEdSpc(getQuoteStart(), k, getQuoteEnd());
|
||||
appender.addEdSpc(getDialect().getQuoteStart(), k, getDialect().getQuoteEnd());
|
||||
});
|
||||
if (appender.isEmpty()) return "*";
|
||||
return appender.toString();
|
||||
@@ -187,7 +189,7 @@ public class DefaultSqlParamBuilder {
|
||||
if (!appender.isEmpty())
|
||||
appender.add(",");
|
||||
Map<String, Object> config = ((Map) fieldConfig.get(k));
|
||||
appender.add(k, "=", "#{data.", v);
|
||||
appender.add(getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), "=", "#{data.", v);
|
||||
if (config != null) {
|
||||
Object jdbcType = config.get("jdbcType"),
|
||||
javaType = config.get("javaType");
|
||||
|
||||
@@ -11,6 +11,11 @@ public class MysqlParamBuilder extends DefaultSqlParamBuilder {
|
||||
public MysqlParamBuilder() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean filedToUpperCase() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialect getDialect() {
|
||||
return Dialect.MYSQL;
|
||||
@@ -20,13 +25,4 @@ public class MysqlParamBuilder extends DefaultSqlParamBuilder {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuoteStart() {
|
||||
return "`";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuoteEnd() {
|
||||
return "`";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,44 +5,56 @@
|
||||
<mapper namespace="BasicMapper">
|
||||
<!--通用查询条件-->
|
||||
<sql id="buildWhere">
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildWhere(resultMapId,$tableName,#this['_parameter'].terms)}
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildWhere(resultMapId,tableName,#this['_parameter'].terms)}
|
||||
</sql>
|
||||
|
||||
<!--生成查询字段-->
|
||||
<sql id="buildSelectField">
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildSelectFields(resultMapId,#this['_parameter'])}
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildSelectFields(resultMapId,tableName,#this['_parameter'])}
|
||||
</sql>
|
||||
|
||||
<!--生成修改字段-->
|
||||
<sql id="buildUpdateField">
|
||||
<set>
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildUpdateFields(resultMapId,#this['_parameter'])}
|
||||
</set>
|
||||
<set>
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildUpdateFields(resultMapId,#this['_parameter'])}
|
||||
</set>
|
||||
</sql>
|
||||
|
||||
<!--生成排序字段-->
|
||||
<sql id="buildSortField">
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildOrder(resultMapId,$tableName,#this['_parameter'])}
|
||||
${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildOrder(resultMapId,tableName,#this['_parameter'])}
|
||||
</sql>
|
||||
|
||||
<!--生成查询sql-->
|
||||
<sql id="buildSelectSql">
|
||||
select
|
||||
<include refid="BasicMapper.buildSelectField"/>
|
||||
from ${$tableName}
|
||||
from ${tableName}
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
</where>
|
||||
<include refid="BasicMapper.buildSortField"/>
|
||||
</sql>
|
||||
|
||||
<!--生成删除sql-->
|
||||
<sql id="buildDeleteSql">
|
||||
delete ${tableName} from ${tableName}
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
<if test="terms.size()==0">
|
||||
1=2
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!--生成InsertSql-->
|
||||
<sql id="buildInsertSql">
|
||||
insert into ${tableName} ${@org.hsweb.web.mybatis.builder.DefaultSqlParamBuilder@instance().buildInsertSql(resultMapId,#this['_parameter'])}
|
||||
insert into ${tableName} ${@org.hsweb.web.mybatis.builder.MysqlParamBuilder@instance().buildInsertSql(resultMapId,#this['_parameter'])}
|
||||
</sql>
|
||||
|
||||
<!--生成UpdateSql-->
|
||||
<sql id="buildUpdateSql">
|
||||
update ${$tableName}
|
||||
update ${tableName}
|
||||
<include refid="BasicMapper.buildUpdateField"/>
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
@@ -51,19 +63,10 @@
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<!--生成删除sql-->
|
||||
<sql id="buildDeleteSql">
|
||||
delete from ${tableName}
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
<if test="terms.size()==0">
|
||||
u_id is null
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!--生成查询数量sql-->
|
||||
<sql id="buildTotalSql">
|
||||
select count(0) as "total" from ${$tableName}
|
||||
select count(0) as "total" from ${tableName}
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
</where>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</select>
|
||||
|
||||
<select id="selectUsing" parameterType="string" resultMap="FormResultMap">
|
||||
select * from s_form WHERE using=1 and name=#{name}
|
||||
select * from s_form WHERE `using`=1 and `name`=#{name}
|
||||
</select>
|
||||
|
||||
<select id="selectLatestList" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="FormResultMap">
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<where>
|
||||
<include refid="BasicMapper.buildWhere"/>
|
||||
<if test="terms.size()==0">
|
||||
u_id is null
|
||||
1=2
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
package org.hsweb.web.service.impl.system;
|
||||
|
||||
import org.hsweb.ezorm.executor.SqlExecutor;
|
||||
import org.hsweb.web.bean.common.database.TableField;
|
||||
import org.hsweb.ezorm.meta.TableMetaData;
|
||||
import org.hsweb.ezorm.meta.parser.MysqlTableMetaParser;
|
||||
import org.hsweb.ezorm.meta.parser.OracleTableMetaParser;
|
||||
import org.hsweb.ezorm.meta.parser.TableMetaParser;
|
||||
import org.hsweb.web.core.Install;
|
||||
import org.hsweb.web.core.exception.BusinessException;
|
||||
import org.hsweb.web.service.system.DataBaseManagerService;
|
||||
import org.hsweb.web.service.system.SqlExecuteProcess;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -22,18 +29,32 @@ public class DataBaseManagerServiceImpl implements DataBaseManagerService {
|
||||
@Resource
|
||||
private SqlExecutor sqlExecutor;
|
||||
|
||||
@Override
|
||||
public List<String> getTableNameList() {
|
||||
return null;
|
||||
private TableMetaParser tableMetaParser;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
switch (Install.getDatabaseType()) {
|
||||
case "mysql":
|
||||
tableMetaParser = new MysqlTableMetaParser(sqlExecutor);
|
||||
break;
|
||||
case "oracle":
|
||||
tableMetaParser = new OracleTableMetaParser(sqlExecutor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TableField> getFieldList(String tableName) {
|
||||
return null;
|
||||
public List<TableMetaData> getTableList() throws SQLException {
|
||||
if (tableMetaParser == null) {
|
||||
throw new BusinessException("表结构解析器不支持");
|
||||
}
|
||||
return tableMetaParser.parseAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeSQL(String sql, SqlExecuteProcess process) throws Exception {
|
||||
public void executeSQL(String sql, SqlExecuteProcess process) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package org.hsweb.web.service.system;
|
||||
|
||||
import org.hsweb.web.bean.common.database.TableField;
|
||||
import org.hsweb.ezorm.meta.TableMetaData;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -17,17 +18,8 @@ public interface DataBaseManagerService {
|
||||
*
|
||||
* @return 表名集合
|
||||
*/
|
||||
List<String> getTableNameList();
|
||||
List<TableMetaData> getTableList() throws SQLException;
|
||||
|
||||
/**
|
||||
* 获取数据库表的字段信息
|
||||
* 能自动获取数据库类型,并列出表对于的字段
|
||||
* 当前版本支持数据库:h2,mysql,oracle
|
||||
*
|
||||
* @param tableName 数据库表名
|
||||
* @return 字段集合
|
||||
*/
|
||||
List<TableField> getFieldList(String tableName);
|
||||
|
||||
/**
|
||||
* 执行sql语句,多条sql语句使用[;\n]分割
|
||||
@@ -35,5 +27,5 @@ public interface DataBaseManagerService {
|
||||
* @param sql sql语句
|
||||
* @param process 执行过程回调,每执行一个sql都应该调用对应的回调方法
|
||||
*/
|
||||
void executeSQL(String sql, SqlExecuteProcess process) throws Exception;
|
||||
void executeSQL(String sql, SqlExecuteProcess process) throws SQLException;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user