From 2404866396fb79b7518a4be618ab068450345fca Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 18 九月 2020 10:36:41 +0800 Subject: [PATCH] 代码生成支持同步数据库 --- src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java | 10 ++++ src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java | 14 ++++++ src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java | 7 +++ src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java | 33 ++++++++++++++++ src/main/resources/mybatis/tool/GenTableColumnMapper.xml | 7 +++ src/main/resources/mybatis/tool/GenTableMapper.xml | 2 6 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java index e57dc1f..9b57268 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java +++ b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java @@ -165,13 +165,25 @@ @PreAuthorize("@ss.hasPermi('tool:gen:code')") @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.GENCODE) @GetMapping("/genCode/{tableName}") - public AjaxResult genCode(HttpServletResponse response, @PathVariable("tableName") String tableName) + public AjaxResult genCode(@PathVariable("tableName") String tableName) { genTableService.generatorCode(tableName); return AjaxResult.success(); } /** + * 鍚屾鏁版嵁搴� + */ + @PreAuthorize("@ss.hasPermi('tool:gen:edit')") + @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE) + @GetMapping("/synchDb/{tableName}") + public AjaxResult synchDb(@PathVariable("tableName") String tableName) + { + genTableService.synchDb(tableName); + return AjaxResult.success(); + } + + /** * 鎵归噺鐢熸垚浠g爜 */ @PreAuthorize("@ss.hasPermi('tool:gen:code')") diff --git a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java index dfd8ddd..782975f 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java +++ b/src/main/java/com/ruoyi/project/tool/gen/mapper/GenTableColumnMapper.java @@ -17,7 +17,7 @@ * @return 鍒椾俊鎭� */ public List<GenTableColumn> selectDbTableColumnsByName(String tableName); - + /** * 鏌ヨ涓氬姟瀛楁鍒楄〃 * @@ -43,6 +43,14 @@ public int updateGenTableColumn(GenTableColumn genTableColumn); /** + * 鍒犻櫎涓氬姟瀛楁 + * + * @param genTableColumns 鍒楁暟鎹� + * @return 缁撴灉 + */ + public int deleteGenTableColumns(List<GenTableColumn> genTableColumns); + + /** * 鎵归噺鍒犻櫎涓氬姟瀛楁 * * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java index 4347993..91f0d09 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java +++ b/src/main/java/com/ruoyi/project/tool/gen/service/GenTableServiceImpl.java @@ -7,6 +7,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.apache.commons.io.IOUtils; @@ -224,7 +225,6 @@ * 鐢熸垚浠g爜锛堣嚜瀹氫箟璺緞锛� * * @param tableName 琛ㄥ悕绉� - * @return 鏁版嵁 */ @Override public void generatorCode(String tableName) @@ -263,6 +263,37 @@ } /** + * 鍚屾鏁版嵁搴� + * + * @param tableName 琛ㄥ悕绉� + */ + @Override + @Transactional + public void synchDb(String tableName) + { + GenTable table = genTableMapper.selectGenTableByName(tableName); + List<GenTableColumn> tableColumns = table.getColumns(); + List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + + dbTableColumns.forEach(column -> { + if (!tableColumnNames.contains(column.getColumnName())) + { + GenUtils.initColumnField(column, table); + genTableColumnMapper.insertGenTableColumn(column); + } + }); + + List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); + if (StringUtils.isNotEmpty(delColumns)) + { + genTableColumnMapper.deleteGenTableColumns(delColumns); + } + } + + /** * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 * * @param tableNames 琛ㄦ暟缁� diff --git a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java index 88dfa37..8777321 100644 --- a/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java +++ b/src/main/java/com/ruoyi/project/tool/gen/service/IGenTableService.java @@ -91,6 +91,13 @@ public void generatorCode(String tableName); /** + * 鍚屾鏁版嵁搴� + * + * @param tableName 琛ㄥ悕绉� + */ + public void synchDb(String tableName); + + /** * 鎵归噺鐢熸垚浠g爜锛堜笅杞芥柟寮忥級 * * @param tableNames 琛ㄦ暟缁� diff --git a/src/main/resources/mybatis/tool/GenTableColumnMapper.xml b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml index c936fe0..9a5ed93 100644 --- a/src/main/resources/mybatis/tool/GenTableColumnMapper.xml +++ b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml @@ -117,4 +117,11 @@ </foreach> </delete> + <delete id="deleteGenTableColumns"> + delete from gen_table_column where column_id in + <foreach collection="list" item="item" open="(" separator="," close=")"> + #{item.columnId} + </foreach> + </delete> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/tool/GenTableMapper.xml b/src/main/resources/mybatis/tool/GenTableMapper.xml index 05ccfb7..4230a3f 100644 --- a/src/main/resources/mybatis/tool/GenTableMapper.xml +++ b/src/main/resources/mybatis/tool/GenTableMapper.xml @@ -186,4 +186,4 @@ </foreach> </delete> -</mapper> \ No newline at end of file +</mapper> \ No newline at end of file -- Gitblit v1.9.3