xuezizhuo 2 жил өмнө
parent
commit
b653eb688d

+ 124 - 0
.idea/uiDesigner.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>

+ 10 - 4
src/main/java/com/customer/config/DynamicDataSource.java

@@ -2,6 +2,8 @@ package com.customer.config;
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.util.StringUtils;
+import com.customer.constant.DataSourceType;
+import com.customer.constant.UrlSuffix;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -76,15 +78,19 @@ public class DynamicDataSource extends AbstractRoutingDataSource {
         String dbtype = genConfig.dbtype;
         String dbName;
 
-        if ("oracle".equals(dbtype)) {
+        /**
+         * 支持数据库类型:mysql、oracle、dm、sqlserver
+         */
+        if (DataSourceType.ORACLE.getDataSourceName().equals(dbtype)) {
             dbName = url.substring(url.lastIndexOf(":") + 1);
-        }else if("sqlserver".equals(dbtype)){
+        }else if(DataSourceType.SQLSERVER.getDataSourceName().equals(dbtype)){
             dbName = url.substring(url.indexOf("DatabaseName=") + 13);
-            url += ";encrypt=true;trustServerCertificate=true";
-        }else if("dm".equals(dbtype)){
+            url += UrlSuffix.SQLSERVER;
+        }else if(DataSourceType.DM.getDataSourceName().equals(dbtype)){
             dbName = url.substring(url.lastIndexOf("=") + 1);
         } else {
             dbName = url.substring(url.lastIndexOf("/") + 1);
+            url += UrlSuffix.MYSQL;
         }
         // 测试连接
         testConnection(driverClassName, url, username, password);

+ 19 - 0
src/main/java/com/customer/constant/DataSourceType.java

@@ -0,0 +1,19 @@
+package com.customer.constant;
+
+public enum DataSourceType {
+
+    MYSQL("mysql"),
+    SQLSERVER("sqlserver"),
+    ORACLE("oracle"),
+    DM("dm");
+
+    private String dataSourceName;
+
+    DataSourceType(String dataSourceName) {
+        this.dataSourceName = dataSourceName;
+    }
+
+    public String getDataSourceName() {
+        return dataSourceName;
+    }
+}

+ 9 - 0
src/main/java/com/customer/constant/UrlSuffix.java

@@ -0,0 +1,9 @@
+package com.customer.constant;
+
+public class UrlSuffix {
+
+    public static final String MYSQL = "?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=true";
+    public static final String SQLSERVER = ";encrypt=true;trustServerCertificate=true";
+    public static final String ORACLE = "";
+    public static final String DM = "";
+}

+ 7 - 13
src/main/java/com/customer/controller/CustomerController.java

@@ -3,12 +3,14 @@ package com.customer.controller;
 
 import com.customer.config.DynamicDataSource;
 import com.customer.config.GenConfig;
+import com.customer.constant.DataSourceType;
 import com.customer.pojo.Customer;
 import com.customer.service.ICustomerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.sql.SQLException;
 import java.util.List;
 
 /**
@@ -30,8 +32,8 @@ public class CustomerController {
     private DynamicDataSource dynamicDataSource;
 
     @GetMapping("/list")
-    public List<Customer> list(@RequestParam("databaseType") String databaseType) throws Exception {
-        if(databaseType.equals("mysql")){
+    public List<Customer> list(@RequestParam("databaseType") String databaseType) throws NoSuchFieldException, IllegalAccessException, SQLException {
+        if(databaseType.equals(DataSourceType.MYSQL.getDataSourceName())){
             GenConfig genConfig = new GenConfig();
             genConfig.setDbtype("mysql");
             genConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
@@ -42,8 +44,7 @@ public class CustomerController {
             DynamicDataSource.clearDataSource();
             //切换数据源
             dynamicDataSource.changeDataSource(genConfig);
-            System.err.println("当前数据源:" + dynamicDataSource.getConnection());
-        }else if(databaseType.equals("sqlServer")){
+        }else if(databaseType.equals(DataSourceType.SQLSERVER.getDataSourceName())){
             GenConfig genConfig = new GenConfig();
             genConfig.setDbtype("sqlserver");
             genConfig.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
@@ -54,8 +55,7 @@ public class CustomerController {
             DynamicDataSource.clearDataSource();
             //切换数据源
             dynamicDataSource.changeDataSource(genConfig);
-            System.err.println("当前数据源:" + dynamicDataSource.getConnection());
-        }else if(databaseType.equals("oracle")){
+        }else if(databaseType.equals(DataSourceType.ORACLE.getDataSourceName())){
             GenConfig genConfig = new GenConfig();
             genConfig.setDbtype("oracle");
             genConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
@@ -66,8 +66,7 @@ public class CustomerController {
             DynamicDataSource.clearDataSource();
             //切换数据源
             dynamicDataSource.changeDataSource(genConfig);
-            System.err.println("当前数据源:" + dynamicDataSource.getConnection());
-        }else if(databaseType.equals("dm")){
+        }else if(databaseType.equals(DataSourceType.DM.getDataSourceName())){
             GenConfig genConfig = new GenConfig();
             genConfig.setDbtype("dm");
             genConfig.setDriverClassName("dm.jdbc.driver.DmDriver");
@@ -78,16 +77,11 @@ public class CustomerController {
             DynamicDataSource.clearDataSource();
             //切换数据源
             dynamicDataSource.changeDataSource(genConfig);
-            System.err.println("当前数据源:" + dynamicDataSource.getConnection());
         }
         return customerService.list();
 
 
     }
 
-    @GetMapping("/test")
-    public List<Customer> test(){
-        return customerService.list();
-    }
 
 }

+ 3 - 5
src/main/java/com/customer/controller/TestController.java → src/main/java/com/customer/controller/TableInfoController.java

@@ -1,19 +1,17 @@
 package com.customer.controller;
 
 
-import com.customer.pojo.TestA;
-import com.customer.service.ITestService;
+import com.customer.service.ITableInfoService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
 import java.util.Map;
 
 @RestController
-public class TestController {
+public class TableInfoController {
 
     @Resource
-    private ITestService testService;
+    private ITableInfoService testService;
 
     @PostMapping("/createDatabase")
     public void crateDatabase(@RequestBody Map<String, Object> map){

+ 7 - 2
src/main/java/com/customer/mapper/TestMapper.java → src/main/java/com/customer/mapper/TableInfoMapper.java

@@ -5,15 +5,20 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
-public interface TestMapper {
+public interface TableInfoMapper {
 
     /**
      * 创建数据库
-     * @param dataBaseName
      */
     void createDataBase(String dataBaseName);
 
+    /**
+     * 使用数据库
+     */
     void useDataBase(String dataBaseName);
 
+    /**
+     * 创建数据表
+     */
     void createTable(@Param("tableName") String tableName,@Param("filedList") List<String> filedList);
 }

+ 4 - 1
src/main/java/com/customer/pojo/TestA.java → src/main/java/com/customer/pojo/TableInfo.java

@@ -2,8 +2,11 @@ package com.customer.pojo;
 
 import lombok.Data;
 
+/**
+ * 表字段信息表
+ */
 @Data
-public class TestA {
+public class TableInfo {
 
     /** 字段名称 */
     private String fieldName;

+ 1 - 1
src/main/java/com/customer/service/ITestService.java → src/main/java/com/customer/service/ITableInfoService.java

@@ -3,7 +3,7 @@ package com.customer.service;
 import java.util.List;
 import java.util.Map;
 
-public interface ITestService {
+public interface ITableInfoService {
 
     void createDataBase(Map<String,Object> map);
 }

+ 6 - 9
src/main/java/com/customer/service/impl/TestServiceImpl.java → src/main/java/com/customer/service/impl/TableInfoServiceImpl.java

@@ -1,13 +1,10 @@
 package com.customer.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.customer.mapper.TestMapper;
-import com.customer.pojo.TestA;
-import com.customer.service.ITestService;
+import com.customer.mapper.TableInfoMapper;
+import com.customer.pojo.TableInfo;
+import com.customer.service.ITableInfoService;
 import org.springframework.stereotype.Service;
-import com.customer.service.ITestService;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -16,10 +13,10 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
-public class TestServiceImpl implements ITestService {
+public class TableInfoServiceImpl implements ITableInfoService {
 
     @Resource
-    private TestMapper testMapper;
+    private TableInfoMapper testMapper;
 
     @Override
     @Transactional
@@ -28,7 +25,7 @@ public class TestServiceImpl implements ITestService {
         testMapper.createDataBase(dataBaseName);
         testMapper.useDataBase(dataBaseName);
         String tableName = (String) map.get("tableName");
-        List<TestA> filedList = JSON.parseArray(JSON.toJSONString(map.get("filed")), TestA.class);
+        List<TableInfo> filedList = JSON.parseArray(JSON.toJSONString(map.get("filed")), TableInfo.class);
 
         List<String> list= filedList.stream().map(filed->{
             StringBuilder stringBuilder = new StringBuilder();

+ 1 - 1
src/main/resources/mapper/TestMapper.xml → src/main/resources/mapper/TableInfoMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.customer.mapper.TestMapper">
+<mapper namespace="com.customer.mapper.TableInfoMapper">
 
     <update id="createDataBase" parameterType="string">
         CREATE database IF NOT EXISTS `${dataBaseName}`