Bladeren bron

代码生成

x1ongzhu 6 jaren geleden
bovenliggende
commit
31ebc94b87
28 gewijzigde bestanden met toevoegingen van 1930 en 563 verwijderingen
  1. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/AsdfasdfasdfMapper.java
  2. 302 0
      src/main/java/com/izouma/awesomeadmin/dao/AsdfasdfasdfMapper.xml
  3. 118 103
      src/main/java/com/izouma/awesomeadmin/dao/TestaaaoneMapper.xml
  4. 100 0
      src/main/java/com/izouma/awesomeadmin/model/Asdfasdfasdf.java
  5. 11 1
      src/main/java/com/izouma/awesomeadmin/model/GenCode.java
  6. 27 0
      src/main/java/com/izouma/awesomeadmin/service/AsdfasdfasdfService.java
  7. 114 0
      src/main/java/com/izouma/awesomeadmin/service/impl/AsdfasdfasdfServiceImpl.java
  8. 104 120
      src/main/java/com/izouma/awesomeadmin/service/impl/GenCodeServiceImpl.java
  9. 118 0
      src/main/java/com/izouma/awesomeadmin/web/AsdfasdfasdfController.java
  10. 1 0
      src/main/java/com/izouma/awesomeadmin/web/GenCodeController.java
  11. 8 22
      src/main/java/com/izouma/codegenerator/ControllerGenerator.java
  12. 89 9
      src/main/java/com/izouma/codegenerator/GeneratorTool.java
  13. 8 22
      src/main/java/com/izouma/codegenerator/MapperGenerator.java
  14. 11 29
      src/main/java/com/izouma/codegenerator/MapperXmlGenerator.java
  15. 1 2
      src/main/java/com/izouma/codegenerator/ModelGenerator.java
  16. 8 22
      src/main/java/com/izouma/codegenerator/ServiceGenerator.java
  17. 8 22
      src/main/java/com/izouma/codegenerator/ServiceImplGenerator.java
  18. 1 0
      src/main/resources/properties/log4j.properties
  19. 4 1
      src/main/resources/templates/ControllerTemplate.vm
  20. 3 1
      src/main/resources/templates/MapperTemplate.vm
  21. 178 172
      src/main/resources/templates/MapperXmlTemplate.vm
  22. 4 0
      src/main/resources/templates/ModelTemplate.vm
  23. 15 35
      src/main/resources/templates/ServiceImplTemplate.vm
  24. 2 1
      src/main/resources/templates/ServiceTemplate.vm
  25. 154 0
      src/main/vue/src/pages/Asdfasdfasdf.vue
  26. 440 0
      src/main/vue/src/pages/Asdfasdfasdfs.vue
  27. 11 1
      src/main/vue/src/router/index.js
  28. 57 0
      src/test/java/GenCodeTest.java

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/dao/AsdfasdfasdfMapper.java

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.Asdfasdfasdf;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.AsdfasdfasdfMapper")
+public interface AsdfasdfasdfMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(Asdfasdfasdf record);
+
+    Asdfasdfasdf selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(Asdfasdfasdf record);
+
+    List<Asdfasdfasdf> queryAllAsdfasdfasdf(Asdfasdfasdf record);
+
+    List<Asdfasdfasdf> queryAsdfasdfasdfByPage(Map<String, Object> parameter);
+
+    int delete(Asdfasdfasdf record);
+
+    Asdfasdfasdf queryAsdfasdfasdf(Asdfasdfasdf record);
+
+    List<Asdfasdfasdf> query(Asdfasdfasdf record);
+}
+

+ 302 - 0
src/main/java/com/izouma/awesomeadmin/dao/AsdfasdfasdfMapper.xml

@@ -0,0 +1,302 @@
+<?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.AsdfasdfasdfMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="aaa" property="aaa" jdbcType="VARCHAR"/>
+        <result column="bbb" property="bbb" jdbcType="VARCHAR"/>
+        <result column="fffff1" property="fffff1" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <!--generatedStart-->
+    <sql id="Base_Column_List">
+        id, del_flag, aaa, bbb, fffff1
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM sdfasdfasdf
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM sdfasdfasdf
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+    <!--generatedEnd-->
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.Asdfasdfasdf" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO sdfasdfasdf
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="aaa!= null">
+                aaa,
+            </if>
+            <if test="bbb!= null">
+                bbb,
+            </if>
+            <if test="fffff1!= null">
+                fffff1,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="aaa != null">
+                #{aaa,jdbcType=VARCHAR},
+            </if>
+            <if test="bbb != null">
+                #{bbb,jdbcType=VARCHAR},
+            </if>
+            <if test="fffff1 != null">
+                #{fffff1,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        UPDATE sdfasdfasdf
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="aaa != null">
+                aaa= #{aaa,jdbcType=VARCHAR},
+            </if>
+            <if test="bbb != null">
+                bbb= #{bbb,jdbcType=VARCHAR},
+            </if>
+            <if test="fffff1 != null">
+                fffff1= #{fffff1,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryAsdfasdfasdfByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        SELECT <include refid="Base_Column_List"/> FROM sdfasdfasdf
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.aaa != null and !&quot;&quot;.equals(record.aaa)">
+                AND aaa = #{record.aaa}
+            </if>
+            <if test="record.bbb != null and !&quot;&quot;.equals(record.bbb)">
+                AND bbb = #{record.bbb}
+            </if>
+            <if test="record.fffff1 != null and !&quot;&quot;.equals(record.fffff1)">
+                AND fffff1 = #{record.fffff1}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR aaa LIKE concat('%',#{record.searchKey},'%')
+                    OR bbb LIKE concat('%',#{record.searchKey},'%')
+                    OR fffff1 LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllAsdfasdfasdf" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        SELECT <include refid="Base_Column_List"/> FROM sdfasdfasdf
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="aaa != null and !&quot;&quot;.equals(aaa)">
+                AND aaa = #{aaa}
+            </if>
+            <if test="bbb != null and !&quot;&quot;.equals(bbb)">
+                AND bbb = #{bbb}
+            </if>
+            <if test="fffff1 != null and !&quot;&quot;.equals(fffff1)">
+                AND fffff1 = #{fffff1}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR aaa LIKE concat('%',#{searchKey},'%')
+                    OR bbb LIKE concat('%',#{searchKey},'%')
+                    OR fffff1 LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAsdfasdfasdf" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        SELECT <include refid="Base_Column_List"/> FROM sdfasdfasdf
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="aaa != null and !&quot;&quot;.equals(aaa)">
+                AND aaa = #{aaa}
+            </if>
+            <if test="bbb != null and !&quot;&quot;.equals(bbb)">
+                AND bbb = #{bbb}
+            </if>
+            <if test="fffff1 != null and !&quot;&quot;.equals(fffff1)">
+                AND fffff1 = #{fffff1}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE sdfasdfasdf SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Asdfasdfasdf">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM sdfasdfasdf
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 118 - 103
src/main/java/com/izouma/awesomeadmin/dao/TestaaaoneMapper.xml

@@ -1,14 +1,16 @@
 <?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.TestaaaoneMapper" >
-    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.Testaaaone" >
-                <id column="id" property="id" jdbcType="INTEGER" />
-                                        <result column="del_flag" property="delFlag" jdbcType="CHAR" />
-                                <result column="test_name" property="testName" jdbcType="VARCHAR" />
-                                <result column="remark" property="remark" jdbcType="VARCHAR" />
-            </resultMap>
-    <sql id="Base_Column_List" >
-        <trim  suffixOverrides="," >
+<mapper namespace="com.izouma.awesomeadmin.dao.TestaaaoneMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.Testaaaone">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="test_name" property="testName" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
             id,
 
             del_flag,
@@ -17,89 +19,96 @@
 
             remark,
 
-            </trim>
+        </trim>
     </sql>
-    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
         select
-        <include refid="Base_Column_List" />
+        <include refid="Base_Column_List"/>
         from test_aaa
         where id = #{id,jdbcType=INTEGER}
     </select>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
-        delete from test_aaa
-        where id = #{id,jdbcType=INTEGER}
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM test_aaa
+        WHERE id = #{id,jdbcType=INTEGER}
     </delete>
-    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.Testaaaone" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.Testaaaone" useGeneratedKeys="true"
+            keyProperty="id">
         insert into test_aaa
-        <trim prefix="(" suffix=")" suffixOverrides="," >
-                <if test="id!= null" >
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id!= null">
                 id,
             </if>
-                <if test="delFlag!= null" >
+            <if test="delFlag!= null">
                 del_flag,
             </if>
-                <if test="testName!= null" >
+            <if test="testName!= null">
                 test_name,
             </if>
-                <if test="remark!= null" >
+            <if test="remark!= null">
                 remark,
             </if>
-            </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-                    <if test="id != null" >
+            <!--insertSelective0-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
                 #{id,jdbcType=INTEGER},
             </if>
-                    <if test="delFlag != null" >
+            <if test="delFlag != null">
                 #{delFlag,jdbcType=CHAR},
             </if>
-                    <if test="testName != null" >
+            <if test="testName != null">
                 #{testName,jdbcType=VARCHAR},
             </if>
-                    <if test="remark != null" >
+            <if test="remark != null">
                 #{remark,jdbcType=VARCHAR},
             </if>
-                </trim>
+            <!--insertSelective1-->
+        </trim>
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.Testaaaone" >
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.Testaaaone">
         update test_aaa
-        <set >
-                    <if test="id != null" >
-               id= #{id,jdbcType=INTEGER},
+        <set>
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
             </if>
-                     <if test="delFlag != null" >
-               del_flag= #{delFlag,jdbcType=CHAR},
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
             </if>
-                     <if test="testName != null" >
-               test_name= #{testName,jdbcType=VARCHAR},
+            <if test="testName != null">
+                test_name= #{testName,jdbcType=VARCHAR},
             </if>
-                     <if test="remark != null" >
-               remark= #{remark,jdbcType=VARCHAR},
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
             </if>
-                 </set>
+        </set>
         where id = #{id,jdbcType=INTEGER}
     </update>
-    <select id="queryTestaaaoneByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Testaaaone">
-        select <include refid="Base_Column_List"/> from test_aaa
+    <select id="queryTestaaaoneByPage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.Testaaaone">
+        select
+        <include refid="Base_Column_List"/>
+        from test_aaa
         <where>
             and del_flag = 'N'
-                    <if test="record.id != null and !&quot;&quot;.equals(record.id)">
-                and  id = #{record.id}
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                and id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                and del_flag = #{record.delFlag}
             </if>
-                     <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
-                and  del_flag = #{record.delFlag}
+            <if test="record.testName != null and !&quot;&quot;.equals(record.testName)">
+                and test_name = #{record.testName}
             </if>
-                     <if test="record.testName != null and !&quot;&quot;.equals(record.testName)">
-                and  test_name = #{record.testName}
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
             </if>
-                     <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
-                and  remark = #{record.remark}
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR test_name LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                </trim>
             </if>
-                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
-             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                OR  test_name LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  remark LIKE concat('%',#{record.searchKey},'%')
-                                                             </trim>
-         </if>
 
             <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
                 <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
@@ -140,81 +149,85 @@
         order by id desc
     </select>
     <select id="queryAllTestaaaone" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Testaaaone">
-        select <include refid="Base_Column_List"/> from test_aaa
+        select
+        <include refid="Base_Column_List"/>
+        from test_aaa
         <where>
             and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
-                and  id = #{id}
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                and id = #{id}
             </if>
-                    <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
-                and  del_flag = #{delFlag}
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                and del_flag = #{delFlag}
             </if>
-                    <if test="testName != null and !&quot;&quot;.equals(testName)">
-                and  test_name = #{testName}
+            <if test="testName != null and !&quot;&quot;.equals(testName)">
+                and test_name = #{testName}
             </if>
-                    <if test="remark != null and !&quot;&quot;.equals(remark)">
-                and  remark = #{remark}
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
             </if>
-                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
-                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                OR  test_name LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  remark LIKE concat('%',#{searchKey},'%')
-                                                                                        </trim>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR test_name LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                </trim>
             </if>
-<if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
-    <foreach item="item" index="index" collection="advancedQuery.split('_;')">
-        <choose>
-            <when test="item.indexOf('like') != -1">
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        concat('%',#{itemDetail},'%')
-                    </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
 
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
 
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        #{itemDetail}
-                    </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
 
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
 
-                </foreach>
-            </otherwise>
-        </choose>
+                            </foreach>
+                        </otherwise>
+                    </choose>
 
 
-    </foreach>
+                </foreach>
 
 
-</if>
+            </if>
         </where>
         order by id desc
     </select>
     <select id="queryTestaaaone" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Testaaaone">
-        select <include refid="Base_Column_List"/> from test_aaa
+        select
+        <include refid="Base_Column_List"/>
+        from test_aaa
         <where>
             and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
+            <if test="id != null and !&quot;&quot;.equals(id)">
                 and id = #{id}
             </if>
-                     <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
                 and del_flag = #{delFlag}
             </if>
-                     <if test="testName != null and !&quot;&quot;.equals(testName)">
+            <if test="testName != null and !&quot;&quot;.equals(testName)">
                 and test_name = #{testName}
             </if>
-                     <if test="remark != null and !&quot;&quot;.equals(remark)">
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
                 and remark = #{remark}
             </if>
-         
+
         </where>
         LIMIT 1
     </select>
@@ -225,10 +238,12 @@
         </where>
     </update>
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.Testaaaone">
-        select <include refid="Base_Column_List"/> from test_aaa
+        select
+        <include refid="Base_Column_List"/>
+        from test_aaa
         <where>
             and del_flag = 'N'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </where>
+        </where>
         order by id desc
     </select>
 </mapper>

+ 100 - 0
src/main/java/com/izouma/awesomeadmin/model/Asdfasdfasdf.java

@@ -0,0 +1,100 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Asdfasdfasdf{
+    private Integer id;
+    private String delFlag;
+    private String aaa;
+    private String bbb;
+    private String fffff1;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public String getAaa(){
+        return this.aaa;
+    }
+
+    public void setAaa(String aaa){
+        this.aaa = aaa;
+    }
+    public String getBbb(){
+        return this.bbb;
+    }
+
+    public void setBbb(String bbb){
+        this.bbb = bbb;
+    }
+    public String getFffff1(){
+        return this.fffff1;
+    }
+
+    public void setFffff1(String fffff1){
+        this.fffff1 = fffff1;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+
+}
+

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

@@ -85,7 +85,7 @@ public class GenCode {
     private String dataBaseType;
 
     private List<TableField> fields;    // 表字段
-    private TableField primaryField; //主键字段
+    private TableField       primaryField; //主键字段
 
     private Boolean readTable;
 
@@ -107,6 +107,8 @@ public class GenCode {
 
     private List<Subtable> subtables;
 
+    private boolean update;
+
 
     public List<TableField> getFields() {
         return fields;
@@ -291,5 +293,13 @@ public class GenCode {
     public void setSubtables(List<Subtable> subtables) {
         this.subtables = subtables;
     }
+
+    public boolean getUpdate() {
+        return update;
+    }
+
+    public void setUpdate(boolean update) {
+        this.update = update;
+    }
 }
 

+ 27 - 0
src/main/java/com/izouma/awesomeadmin/service/AsdfasdfasdfService.java

@@ -0,0 +1,27 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.Asdfasdfasdf;
+
+
+/**
+*  service接口类
+*/
+public interface AsdfasdfasdfService{
+
+    List<Asdfasdfasdf> getAsdfasdfasdfList(Asdfasdfasdf record);
+
+    List<Asdfasdfasdf> getAsdfasdfasdfByPage(Page page, Asdfasdfasdf record);
+
+    Asdfasdfasdf getAsdfasdfasdfById(String id);
+
+    Asdfasdfasdf getAsdfasdfasdf(Asdfasdfasdf record);
+
+    boolean createAsdfasdfasdf(Asdfasdfasdf record);
+
+    boolean deleteAsdfasdfasdf(Asdfasdfasdf record);
+
+    boolean updateAsdfasdfasdf(Asdfasdfasdf record);
+}
+

+ 114 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/AsdfasdfasdfServiceImpl.java

@@ -0,0 +1,114 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.Asdfasdfasdf;
+import com.izouma.awesomeadmin.service.AsdfasdfasdfService;
+import com.izouma.awesomeadmin.dao.AsdfasdfasdfMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class AsdfasdfasdfServiceImpl implements AsdfasdfasdfService{
+
+    private static Logger logger = Logger.getLogger(AsdfasdfasdfServiceImpl.class);
+
+    @Autowired
+    private AsdfasdfasdfMapper asdfasdfasdfMapper;
+
+    @Override
+    public List<Asdfasdfasdf> getAsdfasdfasdfList(Asdfasdfasdf record) {
+        logger.info("getAsdfasdfasdfList");
+        try {
+            return asdfasdfasdfMapper.queryAllAsdfasdfasdf(record);
+        } catch (Exception e) {
+            logger.error("getAsdfasdfasdfList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<Asdfasdfasdf> getAsdfasdfasdfByPage(Page page, Asdfasdfasdf record) {
+        logger.info("getAsdfasdfasdfByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return asdfasdfasdfMapper.queryAsdfasdfasdfByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getAsdfasdfasdfByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public Asdfasdfasdf getAsdfasdfasdfById(String id) {
+        logger.info("getAsdfasdfasdfyId");
+        try {
+            return asdfasdfasdfMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getAsdfasdfasdfById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public Asdfasdfasdf getAsdfasdfasdf(Asdfasdfasdf record) {
+        logger.info("getAsdfasdfasdf");
+        try {
+            return asdfasdfasdfMapper.queryAsdfasdfasdf(record);
+        } catch (Exception e) {
+            logger.error("getAsdfasdfasdf", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createAsdfasdfasdf(Asdfasdfasdf record) {
+        logger.info("createAsdfasdfasdf");
+        try {
+            int updates = asdfasdfasdfMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createAsdfasdfasdf", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteAsdfasdfasdf(Asdfasdfasdf record) {
+        logger.info("deleteAsdfasdfasdf");
+        try {
+            int updates = asdfasdfasdfMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteAsdfasdfasdf", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateAsdfasdfasdf(Asdfasdfasdf record) {
+        logger.info("updateAsdfasdfasdf");
+        try {
+            int updates = asdfasdfasdfMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateAsdfasdfasdf", e);
+        }
+        return false;
+    }
+}
+

+ 104 - 120
src/main/java/com/izouma/awesomeadmin/service/impl/GenCodeServiceImpl.java

@@ -5,6 +5,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.izouma.awesomeadmin.model.GenCode;
+import com.izouma.codegenerator.GeneratorTool;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -14,131 +15,114 @@ import com.izouma.awesomeadmin.dao.GenCodeMapper;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.service.GenCodeService;
 
+import javax.annotation.PostConstruct;
+
 /**
  * gen_code_model service接口实现类
  * Fri May 04 15:57:06 CST 2018  Suo Chen Cheng
- */ 
+ */
 @Service
 public class GenCodeServiceImpl implements GenCodeService {
 
-	private static Logger   logger = Logger.getLogger(GenCodeServiceImpl.class);
-
-	@Autowired
-	private GenCodeMapper genCodeMapper;
-
-	@Override
-	public List <GenCode> getGenCodeList(GenCode record) {
-
-		logger.info("getGenCodeList");
-		try {
-
-			return genCodeMapper.queryAllGenCode(record);
-		} catch (Exception e) {
-			logger.error("getGenCodeList", e);
-		}
-
-		return null;
-	}
-
-	@Override
-	public List <GenCode> getGenCodeByPage(Page page, GenCode record) {
-
-		logger.info("getGenCodeByPage");
-		try {
-
-			Map <String, Object> parameter = new HashMap <String, Object>();
-			parameter.put("record", record);
-			parameter.put(AppConstant.PAGE, page);
-
-			return genCodeMapper.queryGenCodeByPage(parameter);
-		} catch (Exception e) {
-			logger.error("getGenCodeByPage", e);
-		}
-
-		return null;
-	}
-
-	@Override
-	public GenCode getGenCodeById(String id) {
-
-		logger.info("getGenCodeById");
-		try {
-
-			return genCodeMapper.selectByPrimaryKey(Integer.valueOf(id));
-		} catch (Exception e) {
-			logger.error("getGenCodeById", e);
-		}
-
-		return null;
-	}
-
-	@Override
-	public GenCode getGenCode(GenCode record) {
-
-		logger.info("getGenCode");
-		try {
-
-			return genCodeMapper.queryGenCode(record);
-		} catch (Exception e) {
-			logger.error("getGenCode", e);
-		}
-
-		return null;
-	}
-
-	@Override
-	public boolean createGenCode(GenCode record) {
-
-		logger.info("createGenCode");
-		try {
-
-			int updates = genCodeMapper.insertSelective(record);
-
-			if (updates > 0) {
-				return true;
-			}
-		} catch (Exception e) {
-			logger.error("createGenCode", e);
-		}
-
-		return false;
-	}
-
-	@Override
-	public boolean deleteGenCode(String id) {
-
-		logger.info("deleteGenCode");
-		try {
-
-			int updates = genCodeMapper.delete(id);
-
-			if (updates > 0) {
-				return true;
-			}
-		} catch (Exception e) {
-			logger.error("deleteGenCode", e);
-		}
-
-		return false;
-	}
-
-	@Override
-	public boolean updateGenCode(GenCode record) {
-
-		logger.info("updateGenCode");
-		try {
-
-			int updates = genCodeMapper.updateByPrimaryKeySelective(record);
-
-			if (updates > 0) {
-				return true;
-			}
-		} catch (Exception e) {
-			logger.error("updateGenCode", e);
-		}
-
-		return false;
-	}
-
+    private static Logger logger = Logger.getLogger(GenCodeServiceImpl.class);
+
+    @PostConstruct
+    public void init() {
+        GeneratorTool.initVelocity();
+    }
+
+    @Autowired
+    private GenCodeMapper genCodeMapper;
+
+    @Override
+    public List<GenCode> getGenCodeList(GenCode record) {
+        logger.info("getGenCodeList");
+        try {
+            return genCodeMapper.queryAllGenCode(record);
+        } catch (Exception e) {
+            logger.error("getGenCodeList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<GenCode> getGenCodeByPage(Page page, GenCode record) {
+        logger.info("getGenCodeByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return genCodeMapper.queryGenCodeByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getGenCodeByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public GenCode getGenCodeById(String id) {
+        logger.info("getGenCodeById");
+        try {
+            return genCodeMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getGenCodeById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public GenCode getGenCode(GenCode record) {
+        logger.info("getGenCode");
+        try {
+            return genCodeMapper.queryGenCode(record);
+        } catch (Exception e) {
+            logger.error("getGenCode", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createGenCode(GenCode record) {
+        logger.info("createGenCode");
+        try {
+            int updates = genCodeMapper.insertSelective(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createGenCode", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteGenCode(String id) {
+        logger.info("deleteGenCode");
+        try {
+            int updates = genCodeMapper.delete(id);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteGenCode", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateGenCode(GenCode record) {
+        logger.info("updateGenCode");
+        try {
+            int updates = genCodeMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateGenCode", e);
+        }
+        return false;
+    }
 }
 

+ 118 - 0
src/main/java/com/izouma/awesomeadmin/web/AsdfasdfasdfController.java

@@ -0,0 +1,118 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.Asdfasdfasdf;
+import com.izouma.awesomeadmin.service.AsdfasdfasdfService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/asdfasdfasdf")
+public class AsdfasdfasdfController {
+
+    @Autowired
+    private AsdfasdfasdfService asdfasdfasdfService;
+
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(Asdfasdfasdf record) {
+        List<Asdfasdfasdf> pp = asdfasdfasdfService.getAsdfasdfasdfList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getAsdfasdfasdf", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getAsdfasdfasdf(@RequestParam(required = false, value = "id") String id) {
+        Asdfasdfasdf data = asdfasdfasdfService.getAsdfasdfasdfById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(Asdfasdfasdf record) {
+        Asdfasdfasdf data = asdfasdfasdfService.getAsdfasdfasdf(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, Asdfasdfasdf record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<Asdfasdfasdf> pp =asdfasdfasdfService.getAsdfasdfasdfByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(Asdfasdfasdf record) {
+        boolean num = asdfasdfasdfService.createAsdfasdfasdf(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateAsdfasdfasdf(Asdfasdfasdf record) {
+        boolean num = asdfasdfasdfService.updateAsdfasdfasdf(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteAsdfasdfasdf(Asdfasdfasdf record) {
+
+        boolean num = asdfasdfasdfService.deleteAsdfasdfasdf(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, Asdfasdfasdf record) throws Exception {
+
+        List<Asdfasdfasdf> asdfasdfasdfs = asdfasdfasdfService.getAsdfasdfasdfList(record);
+
+        String sheetName = "sdfasdfasdf";
+        String titleName = "sdfasdfasdf数据表";
+        String fileName = "sdfasdfasdf表";
+        int columnNumber = 5;
+        int[] columnWidth = { 20,  20,  20,  20,  20 };
+        String[] columnName = {  "" ,   "删除标识" ,   "" ,   "" ,   ""  };
+        String[][] dataList = new String[asdfasdfasdfs.size()][5];
+
+        for (int i = 0; i < asdfasdfasdfs.size(); i++) {
+                        dataList[i][0] = String.valueOf(asdfasdfasdfs.get(i).getId());
+                        dataList[i][1] = String.valueOf(asdfasdfasdfs.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(asdfasdfasdfs.get(i).getAaa());
+                        dataList[i][3] = String.valueOf(asdfasdfasdfs.get(i).getBbb());
+                        dataList[i][4] = String.valueOf(asdfasdfasdfs.get(i).getFffff1());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+}
+

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

@@ -114,6 +114,7 @@ public class GenCodeController {
     @ResponseBody
     public Result updateGenCode(@RequestBody GenCode record) {
         try {
+            record.setUpdate(true);
             Gson gson = new Gson();
             record.setGenJson(gson.toJson(record));
             genCode(record);

+ 8 - 22
src/main/java/com/izouma/codegenerator/ControllerGenerator.java

@@ -2,6 +2,7 @@ package com.izouma.codegenerator;
 
 
 import com.izouma.awesomeadmin.model.GenCode;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -12,42 +13,27 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 public class ControllerGenerator {
+    private static final Logger LOGGER = Logger.getLogger(ControllerGenerator.class);
+
     public static void GenController(GenCode model) {
         try {
             List<String> imports = new ArrayList<>();
             imports = GeneratorTool.removeDuplicated(imports);
 
-            String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
-            Properties pro = new Properties();
-            pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
-            pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
-            Velocity.init(pro);
             ToolManager manager = new ToolManager(true, true);
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
             context.put("model", model);
             Template t = Velocity.getTemplate("ControllerTemplate.vm");
 
-            String targetFile = model.getClassName() + "Controller.java";
-            File file = new File(model.getJavaPath() + "/web", targetFile);
-            if (!file.getParentFile().exists())
-                file.getParentFile().mkdirs();
-            if (!file.exists())
-                file.createNewFile();
-
-            FileOutputStream outStream = new FileOutputStream(file);
-            OutputStreamWriter writer = new OutputStreamWriter(outStream,
-                    "UTF-8");
-            BufferedWriter sw = new BufferedWriter(writer);
-            t.merge(context, sw);
-            sw.flush();
-            sw.close();
-            outStream.close();
-            System.out.println("成功生成Controller:" + file.getAbsolutePath());
-
+            Path targetFile = Paths.get(model.getJavaPath(), "web", model.getClassName() + "Controller.java").toAbsolutePath();
+            GeneratorTool.merge(targetFile, context, t, model.getUpdate());
+            LOGGER.info("成功生成Controller:" + targetFile.toString());
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 89 - 9
src/main/java/com/izouma/codegenerator/GeneratorTool.java

@@ -2,12 +2,34 @@ package com.izouma.codegenerator;
 
 import com.izouma.awesomeadmin.model.GenCode;
 import com.izouma.awesomeadmin.model.TableField;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.text.CaseUtils;
-
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.context.Context;
+import org.hibernate.validator.internal.util.privilegedactions.GetResource;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class GeneratorTool {
+    public static void initVelocity() {
+        String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
+        Properties pro = new Properties();
+        pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
+        pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
+        Velocity.init(pro);
+    }
+
     public static List<String> getImports(GenCode model) {
         List<String> imports = new ArrayList<>();
         for (TableField field : model.getFields()) {
@@ -75,18 +97,17 @@ public class GeneratorTool {
         return jdbcType.toUpperCase();
     }
 
-    public static List removeDuplicated(List list) {
-        List newList = new ArrayList();
-        for (Object obj : list) {
-            if (!newList.contains(obj)) {
-                newList.add(obj);
+    public static List<String> removeDuplicated(List<String> list) {
+        List<String> newList = new ArrayList<>();
+        for (String s : list) {
+            if (!newList.contains(s)) {
+                newList.add(s);
             }
         }
         return newList;
     }
 
 
-
     public static String SqlServerJdbcType2Mysql(String jdbcType) {
 
         if (jdbcType.equalsIgnoreCase("int identity")) {
@@ -95,15 +116,74 @@ public class GeneratorTool {
             return "varchar";
         } else if (jdbcType.equalsIgnoreCase("ntext")) {
             return "text";
-        }else if (jdbcType.equalsIgnoreCase("nchar")) {
+        } else if (jdbcType.equalsIgnoreCase("nchar")) {
             return "char";
         }
         return jdbcType;
     }
 
-    public static void main(String[] args) {
+    public static void writeFile(Path path, Context context, Template template) {
+        Logger logger = Logger.getLogger(GeneratorTool.class);
+        try {
+            StringWriter stringWriter = new StringWriter();
+            template.merge(context, stringWriter);
+            writeFile(path, stringWriter.toString());
+        } catch (Exception e) {
+            logger.error(e);
+        }
+    }
 
+    public static void merge(Path path, Context context, Template template, boolean update) {
+        String oldContent = null;
+        StringWriter stringWriter = new StringWriter();
+        template.merge(context, stringWriter);
+        String newContent = stringWriter.toString();
+        try {
+            oldContent = new String(Files.readAllBytes(path));
+        } catch (Exception ignored) {
+        }
+        if (StringUtils.isEmpty(oldContent)) {
+            update = false;
+        }
+        if (!update) {
+            writeFile(path, newContent);
+        } else {
+            String merged = replaceGeneratedCode(oldContent, newContent);
+            writeFile(path, merged);
+        }
     }
 
+    public static void writeFile(Path path, String content) {
+        Logger logger = Logger.getLogger(GeneratorTool.class);
+        logger.log(Level.INFO, "writeFile: " + path);
+        try {
+            Files.createDirectories(path.getParent());
+            if (Files.notExists(path)) {
+                Files.createFile(path);
+            }
+            Files.write(path, content.getBytes());
+        } catch (Exception e) {
+            logger.error(e);
+        }
+    }
 
+    public static String replaceGeneratedCode(String src, String dst) {
+        String regex = "<!--generatedStart-->[\\s\\S]*?<!--generatedEnd-->";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher srcMatcher = pattern.matcher(src);
+        Matcher dstMatcher = pattern.matcher(dst);
+        List<String> list = new ArrayList<>();
+        int lastIndex = 0;
+        while (srcMatcher.find() && dstMatcher.find()) {
+            list.add(src.substring(lastIndex, srcMatcher.start()));
+            list.add(dst.substring(dstMatcher.start(), dstMatcher.end()));
+            lastIndex = srcMatcher.end();
+        }
+        list.add(src.substring(lastIndex));
+        return StringUtils.join(list, "");
+    }
+
+    public static void main(String[] args) {
+
+    }
 }

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

@@ -2,6 +2,7 @@ package com.izouma.codegenerator;
 
 
 import com.izouma.awesomeadmin.model.GenCode;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -12,19 +13,18 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 public class MapperGenerator {
+    private static final Logger LOGGER = Logger.getLogger(MapperGenerator.class);
+
     public static void GenMapper(GenCode model) {
         try {
             List<String> imports = new ArrayList<>();
             imports = GeneratorTool.removeDuplicated(imports);
 
-            String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
-            Properties pro = new Properties();
-            pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
-            pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
-            Velocity.init(pro);
             ToolManager manager = new ToolManager(true, true);
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
@@ -37,23 +37,9 @@ public class MapperGenerator {
 //            }
 
             Template t = Velocity.getTemplate(templateName);
-
-            String targetFile = model.getClassName() + "Mapper.java";
-            File file = new File(model.getJavaPath() + "/dao", targetFile);
-            if (!file.getParentFile().exists())
-                file.getParentFile().mkdirs();
-            if (!file.exists())
-                file.createNewFile();
-
-            FileOutputStream outStream = new FileOutputStream(file);
-            OutputStreamWriter writer = new OutputStreamWriter(outStream,
-                    "UTF-8");
-            BufferedWriter sw = new BufferedWriter(writer);
-            t.merge(context, sw);
-            sw.flush();
-            sw.close();
-            outStream.close();
-            System.out.println("成功生成Mapper:" + file.getAbsolutePath());
+            Path targetFile = Paths.get(model.getJavaPath(), "dao", model.getClassName() + "Mapper.java").toAbsolutePath();
+            GeneratorTool.merge(targetFile, context, t, model.getUpdate());
+            LOGGER.info("成功生成Mapper:" + targetFile.toString());
 
         } catch (Exception e) {
             e.printStackTrace();

+ 11 - 29
src/main/java/com/izouma/codegenerator/MapperXmlGenerator.java

@@ -2,28 +2,26 @@ package com.izouma.codegenerator;
 
 
 import com.izouma.awesomeadmin.model.GenCode;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
 import org.apache.velocity.tools.ToolManager;
 import org.hibernate.validator.internal.util.privilegedactions.GetResource;
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 public class MapperXmlGenerator {
+    private static final Logger LOGGER = Logger.getLogger(MapperXmlGenerator.class);
+
     public static void GenXml(GenCode model) {
         try {
             List<String> imports = new ArrayList<>();
 
-            String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
-            Properties pro = new Properties();
-            pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
-            pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
-            Velocity.init(pro);
             ToolManager manager = new ToolManager(true, true);
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
@@ -33,28 +31,12 @@ public class MapperXmlGenerator {
             if ("SqlServer".equals(model.getDataBaseType())) {
                 templateName = "MapperXmlSqlServerTemplate.vm";
             }
-
             Template t = Velocity.getTemplate(templateName);
-
-            String targetFile = model.getClassName() + "Mapper.xml";
-            File file = new File(model.getJavaPath() + "/dao", targetFile);
-            if (!file.getParentFile().exists())
-                file.getParentFile().mkdirs();
-            if (!file.exists())
-                file.createNewFile();
-
-            FileOutputStream outStream = new FileOutputStream(file);
-            OutputStreamWriter writer = new OutputStreamWriter(outStream,
-                    "UTF-8");
-            BufferedWriter sw = new BufferedWriter(writer);
-            t.merge(context, sw);
-            sw.flush();
-            sw.close();
-            outStream.close();
-            System.out.println("成功生成MapperXml:" + file.getAbsolutePath());
-
+            Path targetFile = Paths.get(model.getJavaPath(), "dao", model.getClassName() + "Mapper.xml").toAbsolutePath();
+            GeneratorTool.merge(targetFile, context, t, model.getUpdate());
+            LOGGER.info("成功生成MapperXml:" + targetFile.toString());
         } catch (Exception e) {
-            e.printStackTrace();
+            LOGGER.error(e);
         }
     }
 }

+ 1 - 2
src/main/java/com/izouma/codegenerator/ModelGenerator.java

@@ -17,8 +17,7 @@ import java.util.*;
 public class ModelGenerator {
     public static void GenModel(GenCode model) {
         try {
-            List<String> imports = new ArrayList<>();
-            imports.addAll(GeneratorTool.getImports(model));
+            List<String> imports = new ArrayList<>(GeneratorTool.getImports(model));
             imports = GeneratorTool.removeDuplicated(imports);
 
             String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();

+ 8 - 22
src/main/java/com/izouma/codegenerator/ServiceGenerator.java

@@ -2,6 +2,7 @@ package com.izouma.codegenerator;
 
 
 import com.izouma.awesomeadmin.model.GenCode;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -12,42 +13,27 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 public class ServiceGenerator {
+    private static final Logger LOGGER = Logger.getLogger(ServiceGenerator.class);
+
     public static void GenService(GenCode model) {
         try {
             List<String> imports = new ArrayList<>();
             imports = GeneratorTool.removeDuplicated(imports);
 
-            String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
-            Properties pro = new Properties();
-            pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
-            pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
-            Velocity.init(pro);
             ToolManager manager = new ToolManager(true, true);
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
             context.put("model", model);
             Template t = Velocity.getTemplate("ServiceTemplate.vm");
 
-            String targetFile = model.getClassName() + "Service.java";
-            File file = new File(model.getJavaPath() + "/service", targetFile);
-            if (!file.getParentFile().exists())
-                file.getParentFile().mkdirs();
-            if (!file.exists())
-                file.createNewFile();
-
-            FileOutputStream outStream = new FileOutputStream(file);
-            OutputStreamWriter writer = new OutputStreamWriter(outStream,
-                    "UTF-8");
-            BufferedWriter sw = new BufferedWriter(writer);
-            t.merge(context, sw);
-            sw.flush();
-            sw.close();
-            outStream.close();
-            System.out.println("成功生成Service:" + file.getAbsolutePath());
-
+            Path targetFile = Paths.get(model.getJavaPath(), "service", model.getClassName() + "Service.java").toAbsolutePath();
+            GeneratorTool.merge(targetFile, context, t, model.getUpdate());
+            LOGGER.info("成功生成Service:" + targetFile.toString());
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 8 - 22
src/main/java/com/izouma/codegenerator/ServiceImplGenerator.java

@@ -2,6 +2,7 @@ package com.izouma.codegenerator;
 
 
 import com.izouma.awesomeadmin.model.GenCode;
+import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -12,42 +13,27 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 
 public class ServiceImplGenerator {
+    private static final Logger LOGGER = Logger.getLogger(ServiceImplGenerator.class);
+
     public static void GemServicelImpl(GenCode model) {
         try {
             List<String> imports = new ArrayList<>();
             imports = GeneratorTool.removeDuplicated(imports);
 
-            String templatePath = GetResource.class.getClassLoader().getResource("templates").getPath();
-            Properties pro = new Properties();
-            pro.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
-            pro.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, templatePath);
-            Velocity.init(pro);
             ToolManager manager = new ToolManager(true, true);
             VelocityContext context = new VelocityContext(manager.createContext());
             context.put("imports", imports);
             context.put("model", model);
             Template t = Velocity.getTemplate("ServiceImplTemplate.vm");
 
-            String targetFile = model.getClassName() + "ServiceImpl.java";
-            File file = new File(model.getJavaPath() + "/service/impl", targetFile);
-            if (!file.getParentFile().exists())
-                file.getParentFile().mkdirs();
-            if (!file.exists())
-                file.createNewFile();
-
-            FileOutputStream outStream = new FileOutputStream(file);
-            OutputStreamWriter writer = new OutputStreamWriter(outStream,
-                    "UTF-8");
-            BufferedWriter sw = new BufferedWriter(writer);
-            t.merge(context, sw);
-            sw.flush();
-            sw.close();
-            outStream.close();
-            System.out.println("成功生成ServiceImpl:" + file.getAbsolutePath());
-
+            Path targetFile = Paths.get(model.getJavaPath(), "service","impl", model.getClassName() + "ServiceImpl.java").toAbsolutePath();
+            GeneratorTool.merge(targetFile, context, t, model.getUpdate());
+            LOGGER.info("成功生成ServiceImpl:" + targetFile.toString());
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 1 - 0
src/main/resources/properties/log4j.properties

@@ -3,6 +3,7 @@ log4j.rootLogger=ERROR,console,file,error
 log4j.appender.console=org.apache.log4j.ConsoleAppender
 log4j.appender.console.layout=org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern=Time    \:\t%d{yyyy-MM-dd HH\:mm\:ss}%nClass   \:\t%c%nPriority\:\t%p%nMessage \:\t%m%n--------------------------------------------------------------------------------%n
+log4j.appender.console.encoding=UTF-8
 
 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.file.File=/var/log/awesomeAdmin/info.log

+ 4 - 1
src/main/resources/templates/ControllerTemplate.vm

@@ -23,10 +23,12 @@ import javax.servlet.http.HttpServletResponse;
 @Controller
 @RequestMapping("/$display.uncapitalize($model.className)")
 public class ${model.className}Controller {
-
+    <!--generatedStart-->
     @Autowired
     private ${model.className}Service $display.uncapitalize(${model.className})Service;
+    <!--generatedEnd-->
 
+    <!--generatedStart-->
     @RequiresAuthentication
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     @ResponseBody
@@ -115,5 +117,6 @@ public class ${model.className}Controller {
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
                 columnNumber, columnWidth, columnName, dataList, response);
     }
+    <!--generatedEnd-->
 }
 

+ 3 - 1
src/main/resources/templates/MapperTemplate.vm

@@ -17,7 +17,7 @@ import com.izouma.awesomeadmin.model.${model.className};
 #end
 @Repository("com.zoumaframe.dao.${model.className}Mapper")
 public interface ${model.className}Mapper{
-
+    <!--generatedStart-->
     int deleteByPrimaryKey(Integer id);
 
     int insertSelective(${model.className} record);
@@ -35,5 +35,7 @@ public interface ${model.className}Mapper{
     ${model.className} query${model.className}(${model.className} record);
 
     List<${model.className}> query(${model.className} record);
+    <!--generatedEnd-->
+
 }
 

+ 178 - 172
src/main/resources/templates/MapperXmlTemplate.vm

@@ -1,87 +1,105 @@
 <?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
+<!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}">
+        <!--generatedStart-->
+#*    *##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
+        <!--generatedEnd-->
     </resultMap>
-    <sql id="Base_Column_List" >
-        #foreach($field in $model.fields)#if(${foreach.index}!=0), #end${field.name}#end
+
+    <!--generatedStart-->
+    <sql id="Base_Column_List">
+        #foreach($field in $model.fields)
+#*        *#${field.name}#if( $foreach.hasNext ), #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 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 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 test="$field.modelName!= null" >
-                ${field.name},
-            </if>
-    #end
+        INSERT INTO $model.tableName
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
+#**#            <if test="$field.modelName!= null">
+#**#                ${field.name},
+#**#            </if>
+#*        *##end
+            <!--generatedEnd-->
         </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-        #foreach($field in $model.fields)
-            <if test="$field.modelName != null" >
-                #{$field.modelName,jdbcType=${field.sqlType}},
-            </if>
-        #end
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
+#**#            <if test="$field.modelName != null">
+#**#                #{$field.modelName,jdbcType=${field.sqlType}},
+#**#            </if>
+#*        *##end
+            <!--generatedEnd-->
         </trim>
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.${model.className}" >
-        update $model.tableName
-        <set >
-        #foreach($field in $model.fields)
-            <if test="$field.modelName != null" >
-               ${field.name}= #{$field.modelName,jdbcType=${field.sqlType}},
-            </if>
-         #end
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.${model.className}">
+        UPDATE $model.tableName
+        <set>
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
+#**#            <if test="$field.modelName != null">
+#**#                ${field.name}= #{$field.modelName,jdbcType=${field.sqlType}},
+#**#            </if>
+#*        *##end
+            <!--generatedEnd-->
         </set>
-        where
+        WHERE
         <if test="id != null and !&quot;&quot;.equals(id)">
             id = #{id,jdbcType=INTEGER}
         </if>
-
         <if test="idStr != null and !&quot;&quot;.equals(idStr)">
-            id in (${esc.d}{idStr})
+            id IN (${esc.d}{idStr})
         </if>
     </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}
+        SELECT <include refid="Base_Column_List"/> FROM ${model.tableName}
         <where>
-            and del_flag = 'N'
+            AND del_flag = 'N'
             <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
-                and id in (${esc.d}{record.idStr})
+                AND id IN (${esc.d}{record.idStr})
             </if>
-        #foreach($field in $model.fields)
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
             <if test="record.$field.modelName != null and !&quot;&quot;.equals(record.$field.modelName)">
-                and  ${field.name} = #{record.$field.modelName}
+                AND ${field.name} = #{record.$field.modelName}
+            </if>
+#*        *##end
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+#*                *##foreach($field in $model.fields)#if(${field.name}!='id'&&${field.name}!='ID'&&${field.searchable})
+#**#                    OR ${field.name} LIKE concat('%',#{record.searchKey},'%')
+#*                *##end#end
+                    <!--generatedEnd-->
+                </trim>
             </if>
-         #end
-         <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
-             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-             #foreach($field in $model.fields)
-                 #if(${field.name}!='id'&&${field.name}!='ID')
-                  #if(${field.searchable})
-                 OR  ${field.name} LIKE concat('%',#{record.searchKey},'%')
-                  #end
-                 #end
-             #end
-             </trim>
-         </if>
 
             <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
                 <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
@@ -91,11 +109,9 @@
                                 <if test="detailIndex == 3">
                                     concat('%',#{itemDetail},'%')
                                 </if>
-
                                 <if test="detailIndex &lt; 3">
                                     ${esc.d}{itemDetail}
                                 </if>
-
                             </foreach>
                         </when>
                         <otherwise>
@@ -103,27 +119,17 @@
                                 <if test="detailIndex == 3">
                                     #{itemDetail}
                                 </if>
-
                                 <if test="detailIndex &lt; 3">
                                     ${esc.d}{itemDetail}
                                 </if>
-
                             </foreach>
                         </otherwise>
                     </choose>
-
-
                 </foreach>
-
-
             </if>
-
         </where>
-        order by
-
+        ORDER BY
         <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
-
-
             <trim suffixOverrides=",">
                 <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
                     <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
@@ -133,71 +139,65 @@
             </trim>
             ,
         </if>
-        id desc
+        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}
+        SELECT <include refid="Base_Column_List"/> FROM ${model.tableName}
         <where>
-            and del_flag = 'N'
+            AND del_flag = 'N'
             <if test="idStr != null and !&quot;&quot;.equals(idStr)">
-                and id in (${esc.d}{idStr})
+                AND id IN (${esc.d}{idStr})
             </if>
-        #foreach($field in $model.fields)
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
             <if test="$field.modelName != null and !&quot;&quot;.equals($field.modelName)">
-                and  ${field.name} = #{$field.modelName}
+                AND ${field.name} = #{$field.modelName}
             </if>
-        #end
+#*        *##end
+            <!--generatedEnd-->
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
-                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                    #foreach($field in $model.fields)
-                        #if(${field.name}!='id'&&${field.name}!='ID')
-                            #if(${field.searchable})
-                            OR  ${field.name} LIKE concat('%',#{searchKey},'%')
-                            #end
-                        #end
-                    #end
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+#*                *##foreach($field in $model.fields)
+#*                    *##if(${field.name}!='id'&&${field.name}!='ID')
+#*                        *##if(${field.searchable})
+#*        *#                    OR ${field.name} LIKE concat('%',#{searchKey},'%')
+#*                        *##end
+#*                    *##end
+#*                *##end
+                    <!--generatedEnd-->
                 </trim>
             </if>
-<if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
-    <foreach item="item" index="index" collection="advancedQuery.split('_;')">
-        <choose>
-            <when test="item.indexOf('like') != -1">
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        concat('%',#{itemDetail},'%')
-                    </if>
-
-                    <if test="detailIndex &lt; 3">
-                        ${esc.d}{itemDetail}
-                    </if>
-
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        #{itemDetail}
-                    </if>
-
-                    <if test="detailIndex &lt; 3">
-                        ${esc.d}{itemDetail}
-                    </if>
-
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${esc.d}{itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${esc.d}{itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
                 </foreach>
-            </otherwise>
-        </choose>
-
-
-    </foreach>
-
-
-</if>
+            </if>
         </where>
-        order by
-
+        ORDER BY
         <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
-
-
             <trim suffixOverrides=",">
                 <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
                     <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
@@ -207,70 +207,76 @@
             </trim>
             ,
         </if>
-
-        id desc
+        id DESC
     </select>
+
     <select id="query${model.className}" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
-        select <include refid="Base_Column_List"/> from ${model.tableName}
+        SELECT <include refid="Base_Column_List"/> FROM ${model.tableName}
         <where>
-            and del_flag = 'N'
-        #foreach($field in $model.fields)
+            AND del_flag = 'N'
+            <!--generatedStart-->
+#*        *##foreach($field in $model.fields)
             <if test="$field.modelName != null and !&quot;&quot;.equals($field.modelName)">
-                and ${field.name} = #{$field.modelName}
+                AND ${field.name} = #{$field.modelName}
             </if>
-         #end
-
+#*        *##end
+            <!--generatedEnd-->
         </where>
         LIMIT 1
     </select>
+
     <update id="delete">
         UPDATE ${model.tableName} SET del_flag = 'Y'
-        where
+        WHERE
         <if test="id != null and !&quot;&quot;.equals(id)">
             id = #{id,jdbcType=INTEGER}
         </if>
-
         <if test="idStr != null and !&quot;&quot;.equals(idStr)">
-            id in (${esc.d}{idStr})
+            id IN (${esc.d}{idStr})
         </if>
     </update>
+
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.${model.className}">
-        select <include refid="Base_Column_List"/> from ${model.tableName}
+        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
+            AND del_flag = 'N'
+            <!--generatedStart-->
+#*        *##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
+            <!--generatedEnd-->
         </where>
-        order by id desc
+        ORDER BY id DESC
     </select>
 </mapper>
 

+ 4 - 0
src/main/resources/templates/ModelTemplate.vm

@@ -11,6 +11,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonAutoDetect
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class $model.className{
+    <!--generatedStart-->
 #foreach($field in $model.fields)
     private $field.javaType $field.modelName;
 #end
@@ -28,7 +29,9 @@ public class $model.className{
     * column_name_,desc_;column_name_,asc
     */
     private String orderByStr;
+    <!--generatedEnd-->
 
+    <!--generatedStart-->
 #foreach($field in $model.fields)
     public $field.javaType get${display.capitalize($field.modelName)}(){
         return this.$field.modelName;
@@ -70,6 +73,7 @@ public class $model.className{
     public void setIdStr(String idStr) {
         this.idStr = idStr;
     }
+    <!--generatedEnd-->
 
 }
 

+ 15 - 35
src/main/resources/templates/ServiceImplTemplate.vm

@@ -18,123 +18,103 @@ import com.izouma.awesomeadmin.dao.${model.className}Mapper;
 */
 @Service
 public class ${model.className}ServiceImpl implements ${model.className}Service{
-
+    <!--generatedStart-->
     private static Logger logger = Logger.getLogger(${model.className}ServiceImpl.class);
 
     @Autowired
     private ${model.className}Mapper ${display.uncapitalize(${model.className})}Mapper;
+    <!--generatedEnd-->
 
+    <!--generatedStart-->
     @Override
     public List<${model.className}> get${model.className}List(${model.className} record) {
-
         logger.info("get${model.className}List");
         try {
-
-        return ${display.uncapitalize(${model.className})}Mapper.queryAll${model.className}(record);
+            return ${display.uncapitalize(${model.className})}Mapper.queryAll${model.className}(record);
         } catch (Exception e) {
-        logger.error("get${model.className}List", e);
+            logger.error("get${model.className}List", e);
         }
-
         return null;
     }
+
     @Override
     public List<${model.className}> get${model.className}ByPage(Page page, ${model.className} record) {
-
         logger.info("get${model.className}ByPage");
         try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
 
-        Map<String, Object> parameter = new HashMap<String, Object>();
-        parameter.put("record", record);
-        parameter.put(AppConstant.PAGE, page);
-
-        return ${display.uncapitalize(${model.className})}Mapper.query${model.className}ByPage(parameter);
+            return ${display.uncapitalize(${model.className})}Mapper.query${model.className}ByPage(parameter);
         } catch (Exception e) {
-        logger.error("get${model.className}ByPage", e);
+            logger.error("get${model.className}ByPage", e);
         }
-
         return null;
     }
 
     @Override
     public ${model.className} get${model.className}ById(String id) {
-
         logger.info("get${model.className}yId");
         try {
-
             return ${display.uncapitalize(${model.className})}Mapper.selectByPrimaryKey(Integer.valueOf(id));
         } catch (Exception e) {
-        logger.error("get${model.className}ById", e);
+            logger.error("get${model.className}ById", e);
         }
-
         return null;
     }
 
     @Override
     public ${model.className} get${model.className}(${model.className} record) {
-
         logger.info("get${model.className}");
         try {
-
             return ${display.uncapitalize(${model.className})}Mapper.query${model.className}(record);
         } catch (Exception e) {
-        logger.error("get${model.className}", e);
+            logger.error("get${model.className}", e);
         }
-
         return null;
     }
 
     @Override
     public boolean create${model.className}(${model.className} record) {
-
         logger.info("create${model.className}");
         try {
-
             int updates = ${display.uncapitalize(${model.className})}Mapper.insertSelective(record);
-
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
             logger.error("create${model.className}", e);
         }
-
         return false;
     }
 
     @Override
     public boolean delete${model.className}(${model.className} record) {
-
         logger.info("delete${model.className}");
         try {
-
-             int updates = ${display.uncapitalize(${model.className})}Mapper.delete(record);
-
+            int updates = ${display.uncapitalize(${model.className})}Mapper.delete(record);
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
              logger.error("delete${model.className}", e);
         }
-
         return false;
     }
 
     @Override
     public boolean update${model.className}(${model.className} record) {
-
         logger.info("update${model.className}");
         try {
-
             int updates = ${display.uncapitalize(${model.className})}Mapper.updateByPrimaryKeySelective(record);
-
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
              logger.error("update${model.className}", e);
         }
-
         return false;
     }
+    <!--generatedEnd-->
 }
 

+ 2 - 1
src/main/resources/templates/ServiceTemplate.vm

@@ -12,7 +12,7 @@ import com.izouma.awesomeadmin.model.${model.className};
 *  service接口类
 */
 public interface ${model.className}Service{
-
+    <!--generatedStart-->
     List<${model.className}> get${model.className}List(${model.className} record);
 
     List<${model.className}> get${model.className}ByPage(Page page, ${model.className} record);
@@ -26,5 +26,6 @@ public interface ${model.className}Service{
     boolean delete${model.className}(${model.className} record);
 
     boolean update${model.className}(${model.className} record);
+    <!--generatedEnd-->
 }
 

+ 154 - 0
src/main/vue/src/pages/Asdfasdfasdf.vue

@@ -0,0 +1,154 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="aaa" label="">
+                <el-input v-model="formData.aaa" :disabled="'aaa'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="bbb" label="">
+                <el-input v-model="formData.bbb" :disabled="'bbb'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="fffff1" label="">
+                <el-input v-model="formData.fffff1" :disabled="'fffff1'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'Asdfasdfasdf',
+        created() {
+
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/asdfasdfasdf/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/asdfasdfasdf/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/asdfasdfasdf/update' : '/asdfasdfasdf/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/asdfasdfasdf/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 440 - 0
src/main/vue/src/pages/Asdfasdfasdfs.vue

@@ -0,0 +1,440 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/asdfasdfasdf',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                                                                                    
+                                            <el-table-column
+                                v-if="isColumnShow('aaa')"
+                                prop="aaa"
+                                label=""
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('bbb')"
+                                prop="bbb"
+                                label=""
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('fffff1')"
+                                prop="fffff1"
+                                label=""
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'Asdfasdfasdfs',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                                                                                                                {
+                                label: '',
+                                value: 'aaa',
+                                show: true
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'bbb',
+                                show: true
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'fffff1',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                                                                                                                {
+                                label: '',
+                                value: 'aaa'
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'bbb'
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'fffff1'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/asdfasdfasdf/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/asdfasdfasdf',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/asdfasdfasdf/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/asdfasdfasdf/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 11 - 1
src/main/vue/src/router/index.js

@@ -249,6 +249,16 @@ const router = new Router({
                     path: '/testaaaones',
                     name: 'Testaaaones',
                     component: () => import('../pages/Testaaaones')
+                },
+                {
+                    path: '/asdfasdfasdf',
+                    name: 'Asdfasdfasdf',
+                    component: () => import('../pages/Asdfasdfasdf')
+                },
+                {
+                    path: '/asdfasdfasdfs',
+                    name: 'Asdfasdfasdfs',
+                    component: () => import('../pages/Asdfasdfasdfs')
                 }
                 /**INSERT_LOCATION**/
             ]
@@ -302,4 +312,4 @@ router.afterEach((to, from) => {
     window.onresize();
 });
 
-export default router;
+export default router;

+ 57 - 0
src/test/java/GenCodeTest.java

@@ -1,7 +1,10 @@
+import com.izouma.codegenerator.GeneratorTool;
 import org.apache.commons.lang.StringUtils;
 import org.junit.Test;
 
 import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -53,4 +56,58 @@ public class GenCodeTest {
     public void testUpdateRouter() {
         System.out.println(System.getProperties().getProperty("os.name"));
     }
+
+    @Test
+    public void testRegex() {
+        String regex = "<!--generatedStart-->[\\s\\S]*?<!--generatedEnd-->";
+        Pattern pattern = Pattern.compile(regex);
+        String src = "mapper namespace=\"com.izouma.awesomeadmin.dao.TestaaaoneMapper\">\n" +
+                "    <resultMap id=\"BaseResultMap\" type=\"com.izouma.awesomeadmin.model.Testaaaone\">\n" +
+                "hbpoaidsfjldbasdf\n" +
+                "        <!--generatedStart-->\n" +
+                "        <id column=\"id\" property=\"id\" jdbcType=\"INTEGER\"/>\n" +
+                "        <result column=\"aa\" property=\"delFlag\" jdbcType=\"CHAR\"/>\n" +
+                "        <result column=\"vv\" property=\"testName\" jdbcType=\"VARCHAR\"/>\n" +
+                "        <result column=\"ss\" property=\"remark\" jdbcType=\"VARCHAR\"/>\n" +
+                "        <!--generatedEnd-->\n" +
+                "23123123123\n" +
+                "    </resultMap>" +
+                "mapper namespace=\"com.izouma.awesomeadmin.dao.TestaaaoneMapper\">\n" +
+                "    <resultMap id=\"BaseResultMap\" type=\"com.izouma.awesomeadmin.model.Testaaaone\">\n" +
+                "        <!--generatedStart-->\n" +
+                "        <id column=\"id\" property=\"id\" jdbcType=\"INTEGER\"/>\n" +
+                "        <resulasdfasdfe=\"VARCHAR\"/>\n" +
+                "        <result column=\"remark\" property=\"remark\" jdbcType=\"VARCHAR\"/>\n" +
+                "        <!--generatedEnd-->\n" +
+                "    </resultMap>";
+        String dst = "mapper namespace=\"com.izouma.awesomeadmin.dao.TestaaaoneMapper\">\n" +
+                "    <resultMap id=\"BaseResultMap\" type=\"com.izouma.awesomeadmin.model.Testaaaone\">\n" +
+                "        <!--generatedStart-->\n" +
+                "        <id column=\"id\" property=\"id\" jdbcType=\"INTEGER\"/>\n" +
+                "        <result column=\"del_flag\" property=\"delFlag\" jdbcType=\"CHAR\"/>\n" +
+                "        <result column=\"test_name\" property=\"testName\" jdbcType=\"VARCHAR\"/>\n" +
+                "        <result column=\"remark\" property=\"remark\" jdbcType=\"VARCHAR\"/>\n" +
+                "        <!--generatedEnd-->\n" +
+                "    </resultMap>" +
+                "mapper namespace=\"com.izouma.awesomeadmin.dao.TestaaaoneMapper\">\n" +
+                "    <resultMap id=\"BaseResultMap\" type=\"com.izouma.awesomeadmin.model.Testaaaone\">\n" +
+                "        <!--generatedStart-->\n" +
+                "        we2fgasdfasdf" +
+                "        <!--generatedEnd-->\n" +
+                "    </resultMap>";
+        Matcher matcher1 = pattern.matcher(src);
+        Matcher matcher2 = pattern.matcher(dst);
+        List<String> list = new ArrayList<>();
+        int lastIndex = 0;
+        while (matcher1.find() && matcher2.find()) {
+            list.add(src.substring(lastIndex, matcher1.start()));
+            list.add(dst.substring(matcher2.start(), matcher2.end()));
+            lastIndex = matcher1.end();
+        }
+        list.add(src.substring(lastIndex));
+        String res = StringUtils.join(list, "");
+
+        System.out.println(res);
+    }
+
 }