Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sts网站
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyang
sts网站
Commits
2f624ab5
Commit
2f624ab5
authored
Mar 01, 2024
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码生成新增创建表结构功能
parent
80f96b49
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
161 additions
and
15 deletions
+161
-15
Constants.java
...on/src/main/java/com/ruoyi/common/constant/Constants.java
+1
-1
pom.xml
ruoyi-generator/pom.xml
+7
-7
GenController.java
...in/java/com/ruoyi/generator/controller/GenController.java
+45
-1
GenTableMapper.java
.../main/java/com/ruoyi/generator/mapper/GenTableMapper.java
+8
-0
GenTableServiceImpl.java
...java/com/ruoyi/generator/service/GenTableServiceImpl.java
+13
-3
IGenTableService.java
...in/java/com/ruoyi/generator/service/IGenTableService.java
+11
-2
GenTableMapper.xml
...or/src/main/resources/mapper/generator/GenTableMapper.xml
+4
-0
gen.js
ruoyi-ui/src/api/tool/gen.js
+9
-0
createTable.vue
ruoyi-ui/src/views/tool/gen/createTable.vue
+45
-0
index.vue
ruoyi-ui/src/views/tool/gen/index.vue
+18
-1
No files found.
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
View file @
2f624ab5
...
...
@@ -163,5 +163,5 @@ public class Constants
* 定时任务违规的字符
*/
public
static
final
String
[]
JOB_ERROR_STR
=
{
"java.net.URL"
,
"javax.naming.InitialContext"
,
"org.yaml.snakeyaml"
,
"org.springframework"
,
"org.apache"
,
"com.ruoyi.common.utils.file"
,
"com.ruoyi.common.config"
};
"org.springframework"
,
"org.apache"
,
"com.ruoyi.common.utils.file"
,
"com.ruoyi.common.config"
,
"com.ruoyi.generator"
};
}
ruoyi-generator/pom.xml
View file @
2f624ab5
...
...
@@ -17,24 +17,24 @@
<dependencies>
<!--velocity代码生成使用模板 -->
<!--
velocity代码生成使用模板 -->
<dependency>
<groupId>
org.apache.velocity
</groupId>
<artifactId>
velocity-engine-core
</artifactId>
</dependency>
<!-- collections工具类 -->
<dependency>
<groupId>
commons-collections
</groupId>
<artifactId>
commons-collections
</artifactId>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>
com.ruoyi
</groupId>
<artifactId>
ruoyi-common
</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
View file @
2f624ab5
package
com
.
ruoyi
.
generator
.
controller
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -17,12 +18,18 @@ import org.springframework.web.bind.annotation.PutMapping;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.alibaba.druid.DbType
;
import
com.alibaba.druid.sql.SQLUtils
;
import
com.alibaba.druid.sql.ast.SQLStatement
;
import
com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement
;
import
com.ruoyi.common.annotation.Log
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.page.TableDataInfo
;
import
com.ruoyi.common.core.text.Convert
;
import
com.ruoyi.common.enums.BusinessType
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.sql.SqlUtil
;
import
com.ruoyi.generator.domain.GenTable
;
import
com.ruoyi.generator.domain.GenTableColumn
;
import
com.ruoyi.generator.service.IGenTableColumnService
;
...
...
@@ -109,10 +116,47 @@ public class GenController extends BaseController
String
[]
tableNames
=
Convert
.
toStrArray
(
tables
);
// 查询表信息
List
<
GenTable
>
tableList
=
genTableService
.
selectDbTableListByNames
(
tableNames
);
genTableService
.
importGenTable
(
tableList
);
genTableService
.
importGenTable
(
tableList
,
SecurityUtils
.
getUsername
()
);
return
success
();
}
/**
* 创建表结构(保存)
*/
@PreAuthorize
(
"@ss.hasRole('admin')"
)
@Log
(
title
=
"创建表"
,
businessType
=
BusinessType
.
OTHER
)
@PostMapping
(
"/createTable"
)
public
AjaxResult
createTableSave
(
String
sql
)
{
try
{
SqlUtil
.
filterKeyword
(
sql
);
List
<
SQLStatement
>
sqlStatements
=
SQLUtils
.
parseStatements
(
sql
,
DbType
.
mysql
);
List
<
String
>
tableNames
=
new
ArrayList
<>();
for
(
SQLStatement
sqlStatement
:
sqlStatements
)
{
if
(
sqlStatement
instanceof
MySqlCreateTableStatement
)
{
MySqlCreateTableStatement
createTableStatement
=
(
MySqlCreateTableStatement
)
sqlStatement
;
if
(
genTableService
.
createTable
(
createTableStatement
.
toString
()))
{
String
tableName
=
createTableStatement
.
getTableName
().
replaceAll
(
"`"
,
""
);
tableNames
.
add
(
tableName
);
}
}
}
List
<
GenTable
>
tableList
=
genTableService
.
selectDbTableListByNames
(
tableNames
.
toArray
(
new
String
[
tableNames
.
size
()]));
String
operName
=
SecurityUtils
.
getUsername
();
genTableService
.
importGenTable
(
tableList
,
operName
);
return
AjaxResult
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
AjaxResult
.
error
(
"创建表结构异常"
);
}
}
/**
* 修改保存代码生成业务
*/
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
View file @
2f624ab5
...
...
@@ -80,4 +80,12 @@ public interface GenTableMapper
* @return 结果
*/
public
int
deleteGenTableByIds
(
Long
[]
ids
);
/**
* 创建表
*
* @param sql 表结构
* @return 结果
*/
public
int
createTable
(
String
sql
);
}
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
View file @
2f624ab5
...
...
@@ -27,7 +27,6 @@ import com.ruoyi.common.constant.Constants;
import
com.ruoyi.common.constant.GenConstants
;
import
com.ruoyi.common.core.text.CharsetKit
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.generator.domain.GenTable
;
import
com.ruoyi.generator.domain.GenTableColumn
;
...
...
@@ -150,6 +149,18 @@ public class GenTableServiceImpl implements IGenTableService
genTableColumnMapper
.
deleteGenTableColumnByIds
(
tableIds
);
}
/**
* 创建表
*
* @param sql 创建表语句
* @return 结果
*/
@Override
public
boolean
createTable
(
String
sql
)
{
return
genTableMapper
.
createTable
(
sql
)
==
0
;
}
/**
* 导入表结构
*
...
...
@@ -157,9 +168,8 @@ public class GenTableServiceImpl implements IGenTableService
*/
@Override
@Transactional
public
void
importGenTable
(
List
<
GenTable
>
tableList
)
public
void
importGenTable
(
List
<
GenTable
>
tableList
,
String
operName
)
{
String
operName
=
SecurityUtils
.
getUsername
();
try
{
for
(
GenTable
table
:
tableList
)
...
...
ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
View file @
2f624ab5
...
...
@@ -66,12 +66,21 @@ public interface IGenTableService
*/
public
void
deleteGenTableByIds
(
Long
[]
tableIds
);
/**
* 创建表
*
* @param sql 创建表语句
* @return 结果
*/
public
boolean
createTable
(
String
sql
);
/**
* 导入表结构
*
* @param tableList 导入表列表
* @param operName 操作人员
*/
public
void
importGenTable
(
List
<
GenTable
>
tableList
);
public
void
importGenTable
(
List
<
GenTable
>
tableList
,
String
operName
);
/**
* 预览代码
...
...
ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
View file @
2f624ab5
...
...
@@ -171,6 +171,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</insert>
<update
id=
"createTable"
>
${sql}
</update>
<update
id=
"updateGenTable"
parameterType=
"GenTable"
>
update gen_table
<set>
...
...
ruoyi-ui/src/api/tool/gen.js
View file @
2f624ab5
...
...
@@ -43,6 +43,15 @@ export function importTable(data) {
})
}
// 创建表
export
function
createTable
(
data
)
{
return
request
({
url
:
'/tool/gen/createTable'
,
method
:
'post'
,
params
:
data
})
}
// 预览生成代码
export
function
previewTable
(
tableId
)
{
return
request
({
...
...
ruoyi-ui/src/views/tool/gen/createTable.vue
0 → 100644
View file @
2f624ab5
<
template
>
<!-- 创建表 -->
<el-dialog
title=
"创建表"
:visible
.
sync=
"visible"
width=
"800px"
top=
"5vh"
append-to-body
>
<span>
创建表语句(支持多个建表语句):
</span>
<el-input
type=
"textarea"
:rows=
"10"
placeholder=
"请输入文本"
v-model=
"content"
></el-input>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleCreateTable"
>
确 定
</el-button>
<el-button
@
click=
"visible = false"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
createTable
}
from
"@/api/tool/gen"
;
export
default
{
data
()
{
return
{
// 遮罩层
visible
:
false
,
// 文本内容
content
:
""
};
},
methods
:
{
// 显示弹框
show
()
{
this
.
visible
=
true
;
},
/** 创建按钮操作 */
handleCreateTable
()
{
if
(
this
.
content
===
""
)
{
this
.
$modal
.
msgError
(
"请输入建表语句"
);
return
;
}
createTable
({
sql
:
this
.
content
}).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
res
.
msg
);
if
(
res
.
code
===
200
)
{
this
.
visible
=
false
;
this
.
$emit
(
"ok"
);
}
});
}
}
};
</
script
>
ruoyi-ui/src/views/tool/gen/index.vue
View file @
2f624ab5
...
...
@@ -41,10 +41,21 @@
plain
icon=
"el-icon-download"
size=
"mini"
:disabled=
"multiple"
@
click=
"handleGenTable"
v-hasPermi=
"['tool:gen:code']"
>
生成
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"openCreateTable"
v-hasRole=
"['admin']"
>
创建
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"info"
...
...
@@ -172,12 +183,14 @@
</el-tabs>
</el-dialog>
<import-table
ref=
"import"
@
ok=
"handleQuery"
/>
<create-table
ref=
"create"
@
ok=
"handleQuery"
/>
</div>
</template>
<
script
>
import
{
listTable
,
previewTable
,
delTable
,
genCode
,
synchDb
}
from
"@/api/tool/gen"
;
import
importTable
from
"./importTable"
;
import
createTable
from
"./createTable"
;
import
hljs
from
"highlight.js/lib/highlight"
;
import
"highlight.js/styles/github-gist.css"
;
hljs
.
registerLanguage
(
"java"
,
require
(
"highlight.js/lib/languages/java"
));
...
...
@@ -189,7 +202,7 @@ hljs.registerLanguage("sql", require("highlight.js/lib/languages/sql"));
export
default
{
name
:
"Gen"
,
components
:
{
importTable
},
components
:
{
importTable
,
createTable
},
data
()
{
return
{
// 遮罩层
...
...
@@ -283,6 +296,10 @@ export default {
openImportTable
()
{
this
.
$refs
.
import
.
show
();
},
/** 打开创建表弹窗 */
openCreateTable
()
{
this
.
$refs
.
create
.
show
();
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRange
=
[];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment