Ver código fonte

Merge remote-tracking branch 'origin/master'

xiongzhu 7 anos atrás
pai
commit
baf8ef9ca7

+ 14 - 1
src/main/java/com/izouma/awesomeadmin/model/GenCode.java

@@ -69,8 +69,13 @@ public class GenCode {
      */
      */
     private String viewPath;
     private String viewPath;
 
 
+    /**
+     * 数据库类型:Mysql/SqlServer
+     */
+    private String dataBaseType;
+
     private List<TableField> fields;    // 表字段
     private List<TableField> fields;    // 表字段
-    private TableField       primaryField; //主键字段
+    private TableField primaryField; //主键字段
 
 
     public List<TableField> getFields() {
     public List<TableField> getFields() {
         return fields;
         return fields;
@@ -175,5 +180,13 @@ public class GenCode {
     public void setViewPath(String viewPath) {
     public void setViewPath(String viewPath) {
         this.viewPath = viewPath;
         this.viewPath = viewPath;
     }
     }
+
+    public String getDataBaseType() {
+        return dataBaseType;
+    }
+
+    public void setDataBaseType(String dataBaseType) {
+        this.dataBaseType = dataBaseType;
+    }
 }
 }
 
 

+ 1 - 0
src/main/java/com/izouma/awesomeadmin/model/TableField.java

@@ -337,5 +337,6 @@ public class TableField {
     public void setModelName(String modelName) {
     public void setModelName(String modelName) {
         this.modelName = modelName;
         this.modelName = modelName;
     }
     }
+
 }
 }
 
 

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/web/GenCodeController.java

@@ -85,7 +85,7 @@ public class GenCodeController extends BaseController {
         try {
         try {
             record.setClassName(CaseUtils.toCamelCase(record.getTableName(), true, '_'));
             record.setClassName(CaseUtils.toCamelCase(record.getTableName(), true, '_'));
             ControllerGenerator.GenController(record);
             ControllerGenerator.GenController(record);
-            if (record.getGenClass()) {
+            if (record.getGenTable()) {
                 TableGenerator.GenTable(record);
                 TableGenerator.GenTable(record);
             }
             }
             if (record.getGenClass()) {
             if (record.getGenClass()) {

+ 8 - 1
src/main/java/com/izouma/codegenerator/MapperGenerator.java

@@ -29,7 +29,14 @@ public class MapperGenerator {
             VelocityContext context = new VelocityContext(manager.createContext());
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
             context.put("imports", imports);
             context.put("model", model);
             context.put("model", model);
-            Template t = Velocity.getTemplate("MapperTemplate.vm");
+
+            String templateName = "MapperTemplate.vm";
+
+            if ("SqlServer".equals(model.getDataBaseType())) {
+                templateName = "MapperSqlServerTemplate.vm";
+            }
+
+            Template t = Velocity.getTemplate(templateName);
 
 
             String targetFile = model.getClassName() + "Mapper.java";
             String targetFile = model.getClassName() + "Mapper.java";
             File file = new File(model.getJavaPath() + "/dao", targetFile);
             File file = new File(model.getJavaPath() + "/dao", targetFile);

+ 7 - 1
src/main/java/com/izouma/codegenerator/MapperXmlGenerator.java

@@ -28,7 +28,13 @@ public class MapperXmlGenerator {
             VelocityContext context = new VelocityContext(manager.createContext());
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
             context.put("imports", imports);
             context.put("model", model);
             context.put("model", model);
-            Template t = Velocity.getTemplate("MapperXmlTemplate.vm");
+            String templateName = "MapperXmlTemplate.vm";
+
+            if ("SqlServer".equals(model.getDataBaseType())) {
+                templateName = "MapperXmlSqlServerTemplate.vm";
+            }
+
+            Template t = Velocity.getTemplate(templateName);
 
 
             String targetFile = model.getClassName() + "Mapper.xml";
             String targetFile = model.getClassName() + "Mapper.xml";
             File file = new File(model.getJavaPath() + "/dao", targetFile);
             File file = new File(model.getJavaPath() + "/dao", targetFile);

+ 67 - 13
src/main/java/com/izouma/codegenerator/TableGenerator.java

@@ -3,6 +3,7 @@ package com.izouma.codegenerator;
 import com.izouma.awesomeadmin.model.GenCode;
 import com.izouma.awesomeadmin.model.GenCode;
 import com.izouma.awesomeadmin.model.TableField;
 import com.izouma.awesomeadmin.model.TableField;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
+import org.apache.commons.lang.StringUtils;
 
 
 import java.sql.Connection;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.DriverManager;
@@ -45,20 +46,44 @@ public class TableGenerator {
     public static void GenTable(GenCode model) throws Exception {
     public static void GenTable(GenCode model) throws Exception {
         Connection conn = null;
         Connection conn = null;
         try {
         try {
-            Class.forName("com.mysql.jdbc.Driver");
-            System.out.println("成功加载MySQL驱动!");
 
 
-            PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
-            propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
+            if ("Mysql".equals(model.getDataBaseType())) {
+                Class.forName("com.mysql.jdbc.Driver");
+                System.out.println("成功加载MySQL驱动!");
+
+                PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
+                propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
+
+                String url = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
+                String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.username");
+                String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.password");
+                conn = DriverManager.getConnection(url, user, password);
+
+                System.out.println("成功连接到数据库!");
+            } else if ("SqlServer".equals(model.getDataBaseType())) {
+                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+                System.out.println("成功加载SQLServer驱动!");
+
+                PropertiesFileLoader propertiesFileLoader = PropertiesFileLoader.getInstance();
+                propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
+
+                String url = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.url");
+                String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.user");
+                String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "sqlserver.password");
+                conn = DriverManager.getConnection(url, user, password);
+            }
+
 
 
-            String url = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.url");
-            String user = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.username");
-            String password = propertiesFileLoader.getProperties("properties/jdbc.properties", "jdbc.password");
-            conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             Statement stmt = conn.createStatement();
-            System.out.println("成功连接到数据库!");
 
 
-            String sql = "DROP TABLE IF EXISTS "+ model.getTableName() + "; create table " + model.getTableName() + "(";
+            String sql = "DROP TABLE IF EXISTS " + model.getTableName() + "; create table " + model.getTableName() + "(";
+
+            if ("SqlServer".equals(model.getDataBaseType())) {
+                sql = "IF EXISTS (SELECT * FROM sys.objects where name = '" + model.getTableName() + "')DROP TABLE " + model.getTableName()
+                        + "; create table " + model.getTableName() + "(";
+            }
+
+
             for (TableField tableField : model.getFields()) {
             for (TableField tableField : model.getFields()) {
                 if (tableField.getLength() == null) {
                 if (tableField.getLength() == null) {
                     switch (tableField.getJdbcType()) {
                     switch (tableField.getJdbcType()) {
@@ -88,7 +113,22 @@ public class TableGenerator {
                     tableField.setLength(0);
                     tableField.setLength(0);
                 }
                 }
 
 
-                sql += " " + tableField.getName() + " " + tableField.getJdbcType() + "(" + tableField.getLength() + ")";
+
+                if ("Mysql".equals(model.getDataBaseType())) {
+
+                    sql += " " + tableField.getName() + " " + tableField.getJdbcType() + "(" + tableField.getLength() + ")";
+
+                } else if ("SqlServer".equals(model.getDataBaseType())) {
+                    if ("int".equals(tableField.getJdbcType())) {
+
+                        sql += " " + tableField.getName() + " " + tableField.getJdbcType();
+                    } else {
+                        sql += " " + tableField.getName() + " " + tableField.getJdbcType() + "(" + tableField.getLength() + ")";
+                    }
+
+                }
+
+
                 if (tableField.getNotNull()) {
                 if (tableField.getNotNull()) {
                     sql += " not null ";
                     sql += " not null ";
                 }
                 }
@@ -96,12 +136,26 @@ public class TableGenerator {
                     sql += " primary key ";
                     sql += " primary key ";
                 }
                 }
                 if (tableField.getAutoIncrease()) {
                 if (tableField.getAutoIncrease()) {
-                    sql += " auto_increment ";
+                    if ("Mysql".equals(model.getDataBaseType())) {
+
+                        sql += " auto_increment ";
+
+                    } else if ("SqlServer".equals(model.getDataBaseType())) {
+                        sql += " identity(1,1) ";
+                    }
+
                 }
                 }
                 if (tableField.getDefaultValue() != null) {
                 if (tableField.getDefaultValue() != null) {
                     sql += " default " + "'" + tableField.getDefaultValue() + "'";
                     sql += " default " + "'" + tableField.getDefaultValue() + "'";
                 }
                 }
-                sql += " comment " + "'" + tableField.getRemark() + "',";
+
+                if (StringUtils.isNotEmpty(tableField.getRemark())) {
+                    if ("Mysql".equals(model.getDataBaseType())) {
+                        sql += " comment " + "'" + tableField.getRemark() + "'";
+                    }
+                }
+
+                sql += ",";
             }
             }
             String str = sql.substring(0, sql.lastIndexOf(","));
             String str = sql.substring(0, sql.lastIndexOf(","));
             String sql1 = str + " )";
             String sql1 = str + " )";

+ 37 - 0
src/main/resources/templates/MapperSqlServerTemplate.vm

@@ -0,0 +1,37 @@
+package com.izouma.awesomeadmin.dao;
+
+#foreach($import in $imports)
+$import
+#end
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.${model.className};
+
+
+/**
+*  Dao接口
+*/
+@DataSource("dataSourceSqlserver")
+@Repository("com.zoumaframe.dao.${model.className}Mapper")
+public interface ${model.className}Mapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(${model.className} record);
+
+    ${model.className} selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(${model.className} record);
+
+    List<${model.className}> queryAll${model.className}(${model.className} record);
+
+    List<${model.className}> query${model.className}ByPage(Map<String, Object> parameter);
+
+    int delete(String id);
+
+    ${model.className} query${model.className}(${model.className} record);
+
+    List<${model.className}> query(${model.className} record);
+}
+

+ 144 - 0
src/main/resources/templates/MapperXmlSqlServerTemplate.vm

@@ -0,0 +1,144 @@
+<?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.izouma.awesomeadmin.dao.${model.className}Mapper" >
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.${model.className}" >
+#foreach($field in $model.fields)
+        #if(${field.name}=='id')
+        <id column="id" property="id" jdbcType="INTEGER" />
+        #end
+        #if(${field.name}!='id')
+        <result column="${field.name}" property="$field.modelName" jdbcType="$field.sqlType" />
+        #end
+#end
+    </resultMap>
+    <sql id="Base_Column_List" >
+    #foreach($field in $model.fields)
+        ${field.name}#if($velocityCount!=$model.fields.size()),#end
+    #end
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+        select
+        <include refid="Base_Column_List" />
+        from $model.tableName
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+        delete from $model.tableName
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.${model.className}" useGeneratedKeys="true" keyProperty="id">
+        insert into $model.tableName
+        <trim prefix="(" suffix=")" suffixOverrides="," >
+    #foreach($field in $model.fields)
+        #if(${field.name}!='id')
+            <if test="$field.modelName!= null" >
+                ${field.name},
+            </if>
+        #end
+    #end
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides="," >
+        #foreach($field in $model.fields)
+            #if(${field.name}!='id')
+            <if test="$field.modelName != null" >
+                #{$field.modelName,jdbcType=${field.sqlType}},
+            </if>
+            #end
+        #end
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.${model.className}" >
+        update $model.tableName
+        <set >
+        #foreach($field in $model.fields)
+            #if(${field.name}!='id')
+            <if test="$field.modelName != null" >
+               ${field.name}= #{$field.modelName,jdbcType=${field.sqlType}},
+            </if>
+            #end
+         #end
+        </set>
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+    <select id="query${model.className}ByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
+        select <include refid="Base_Column_List"/> from ${model.tableName}
+        <where>
+            and del_flag = 'N'
+        #foreach($field in $model.fields)
+            <if test="record.$field.modelName != null and !&quot;&quot;.equals(record.$field.modelName)">
+                and  ${field.name} = #{record.$field.modelName}
+            </if>
+         #end
+        </where>
+        order by id desc
+    </select>
+    <select id="queryAll${model.className}" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
+        select <include refid="Base_Column_List"/> from ${model.tableName}
+        <where>
+            and del_flag = 'N'
+        #foreach($field in $model.fields)
+            <if test="$field.modelName != null and !&quot;&quot;.equals($field.modelName)">
+                and  ${field.name} = #{$field.modelName}
+            </if>
+        #end
+        </where>
+        order by id desc
+    </select>
+    <select id="query${model.className}" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
+        select top 1 <include refid="Base_Column_List"/> from ${model.tableName}
+        <where>
+            and del_flag = 'N'
+        #foreach($field in $model.fields)
+            <if test="$field.modelName != null and !&quot;&quot;.equals($field.modelName)">
+                and ${field.name} = #{$field.modelName}
+            </if>
+         #end
+
+        </where>
+    </select>
+    <update id="delete">
+        UPDATE ${model.tableName} SET del_flag = 'Y'
+        <where>
+            AND id = #{id}
+        </where>
+    </update>
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
+        select <include refid="Base_Column_List"/> from ${model.tableName}
+        <where>
+            and del_flag = 'N'
+            #foreach($field in $model.fields)
+                #if(${field.searchable})
+                    #if(${field.searchMethod}=="=")
+                        and ${field.name} = #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}=="!=")
+                        and ${field.name} != #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}==">")
+                        and ${field.name} > #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}==">=")
+                        and ${field.name} >= #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}=="<")
+                        and ${field.name} < #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}=="<=")
+                        and ${field.name} <= #{$field.modelName}
+                    #end
+                    #if(${field.searchMethod}=="like")
+                        and ${field.name} like  '%${$field.modelName}%'
+                    #end
+                    #if(${field.searchMethod}=="left like")
+                        and ${field.name} like  '%${$field.modelName}'
+                    #end
+                    #if(${field.searchMethod}=="right like")
+                        and ${field.name} like '${$field.modelName}%'
+                    #end
+                #end
+            #end
+        </where>
+        order by id desc
+    </select>
+</mapper>
+

+ 16 - 2
src/main/vue/src/pages/GenCode.vue

@@ -7,6 +7,18 @@
             <el-form-item prop="remark" label="描述">
             <el-form-item prop="remark" label="描述">
                 <el-input v-model="formData.remark" style="width: 400px;"></el-input>
                 <el-input v-model="formData.remark" style="width: 400px;"></el-input>
             </el-form-item>
             </el-form-item>
+            <el-form-item prop="dataBaseType" label="数据库">
+                <el-select placeholder="数据库类型" size="small" v-model="formData.dataBaseType"  class="filter-item">
+                    <el-option
+                        label="Mysql"
+                        value="Mysql">
+                    </el-option>
+                    <el-option
+                        label="SqlServer"
+                        value="SqlServer">
+                    </el-option>
+                </el-select>
+            </el-form-item>
             <el-form-item prop="genCode" label="生成">
             <el-form-item prop="genCode" label="生成">
                 <el-checkbox v-model="formData.genTable" label="表"></el-checkbox>
                 <el-checkbox v-model="formData.genTable" label="表"></el-checkbox>
                 <el-checkbox v-model="formData.genClass" label="类"></el-checkbox>
                 <el-checkbox v-model="formData.genClass" label="类"></el-checkbox>
@@ -237,7 +249,8 @@
                     genForm: true,
                     genForm: true,
                     rootPath: '',
                     rootPath: '',
                     javaPathRelative: '',
                     javaPathRelative: '',
-                    viewPathRelative: ''
+                    viewPathRelative: '',
+                    dataBaseType:'Mysql'
                 },
                 },
                 fields: [{
                 fields: [{
                     name: 'id',
                     name: 'id',
@@ -301,7 +314,8 @@
                     remark: '',
                     remark: '',
                     showInList: true,
                     showInList: true,
                     showInForm: true,
                     showInForm: true,
-                    searchable: false
+                    searchable: false,
+                    formType:'singleLineText'
                 });
                 });
             },
             },
             removeField(i) {
             removeField(i) {