Browse Source

代码生成器,可指定表查入数据并返回主键

shuzheng 8 years ago
parent
commit
8d7edddfa4

+ 3 - 1
zheng-common/src/main/java/com/zheng/common/util/MybatisGeneratorUtil.java

@@ -47,7 +47,8 @@ public class MybatisGeneratorUtil {
 			String module,
 			String database,
 			String table_prefix,
-			String package_name) throws Exception{
+			String package_name,
+			Map<String, String> last_insert_id_tables) throws Exception{
 
 		String targetProject = module + "/" + module + "-dao";
 		String module_path = module + "/" + module + "-dao/src/main/resources/generatorConfig.xml";
@@ -79,6 +80,7 @@ public class MybatisGeneratorUtil {
 			context.put("targetProject", targetProject);
 			context.put("targetProject_sqlMap", targetProject_sqlMap);
 			context.put("generator_jdbc_password", AESUtil.AESDecode(jdbc_password));
+			context.put("last_insert_id_tables", last_insert_id_tables);
 			VelocityUtil.generate(generatorConfig_vm, module_path, context);
 			// 删除旧代码
 			deleteDir(new File(targetProject + "/src/main/java/" + package_name.replaceAll("\\.", "/") + "/dao/model"));

+ 9 - 1
zheng-common/src/main/resources/template/generatorConfig.vm

@@ -62,7 +62,15 @@
 
         <!-- 需要映射的表 -->
         #foreach($table in $tables)
-        <table tableName="$!table.table_name" domainObjectName="$!table.model_name"></table>
+            #foreach($last_insert_id_table in $last_insert_id_tables.entrySet())
+                #if($!last_insert_id_table.key == $!table.table_name)
+                    <table tableName="$!table.table_name" domainObjectName="$!table.model_name">
+                        <generatedKey column="$!last_insert_id_table.value" sqlStatement="MySql" identity="true" />
+                    </table>
+                #else
+                    <table tableName="$!table.table_name" domainObjectName="$!table.model_name"></table>
+                #end
+            #end
         #end
     </context>
 </generatorConfiguration>

+ 9 - 1
zheng-upms/zheng-upms-dao/src/main/java/com/zheng/upms/dao/Generator.java

@@ -3,6 +3,9 @@ package com.zheng.upms.dao;
 import com.zheng.common.util.MybatisGeneratorUtil;
 import com.zheng.common.util.PropertiesFileUtil;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 代码生成类
  * Created by ZhangShuzheng on 2017/1/10.
@@ -18,13 +21,18 @@ public class Generator {
 	private static String JDBC_URL = PropertiesFileUtil.getInstance("generator").get("generator.jdbc.url");
 	private static String JDBC_USERNAME = PropertiesFileUtil.getInstance("generator").get("generator.jdbc.username");
 	private static String JDBC_PASSWORD = PropertiesFileUtil.getInstance("generator").get("generator.jdbc.password");
+	// 需要insert后返回主键的表配置,key:表名,value:主键名
+	private static Map<String, String> LAST_INSERT_ID_TABLES = new HashMap<>();
+	static {
+		LAST_INSERT_ID_TABLES.put("upms_user", "user_id");
+	}
 
 	/**
 	 * 自动代码生成
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
-		MybatisGeneratorUtil.generator(JDBC_DRIVER, JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD, MODULE, DATABASE, TABLE_PREFIX, PACKAGE_NAME);
+		MybatisGeneratorUtil.generator(JDBC_DRIVER, JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD, MODULE, DATABASE, TABLE_PREFIX, PACKAGE_NAME, LAST_INSERT_ID_TABLES);
 	}
 
 }

+ 14 - 14
zheng-upms/zheng-upms-rpc-service/src/main/java/com/zheng/upms/dao/mapper/UpmsUserMapper.xml

@@ -114,21 +114,24 @@
     </if>
   </delete>
   <insert id="insert" parameterType="com.zheng.upms.dao.model.UpmsUser">
-    insert into upms_user (user_id, username, password, 
-      salt, realname, avatar, 
-      phone, email, sex, 
-      locked, ctime)
-    values (#{userId,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
-      #{salt,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR}, #{avatar,jdbcType=VARCHAR}, 
-      #{phone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{sex,jdbcType=TINYINT}, 
-      #{locked,jdbcType=TINYINT}, #{ctime,jdbcType=BIGINT})
+    <selectKey keyProperty="userId" order="AFTER" resultType="java.lang.Integer">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
+    insert into upms_user (username, password, salt, 
+      realname, avatar, phone, 
+      email, sex, locked, 
+      ctime)
+    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{salt,jdbcType=VARCHAR}, 
+      #{realname,jdbcType=VARCHAR}, #{avatar,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, 
+      #{email,jdbcType=VARCHAR}, #{sex,jdbcType=TINYINT}, #{locked,jdbcType=TINYINT}, 
+      #{ctime,jdbcType=BIGINT})
   </insert>
   <insert id="insertSelective" parameterType="com.zheng.upms.dao.model.UpmsUser">
+    <selectKey keyProperty="userId" order="AFTER" resultType="java.lang.Integer">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
     insert into upms_user
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="userId != null">
-        user_id,
-      </if>
       <if test="username != null">
         username,
       </if>
@@ -161,9 +164,6 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="userId != null">
-        #{userId,jdbcType=INTEGER},
-      </if>
       <if test="username != null">
         #{username,jdbcType=VARCHAR},
       </if>

+ 1 - 0
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsUserController.java

@@ -241,6 +241,7 @@ public class UpmsUserController extends BaseController {
         upmsUser.setPassword(MD5Util.MD5(upmsUser.getPassword() + upmsUser.getSalt()));
         upmsUser.setCtime(time);
         int count = upmsUserService.insertSelective(upmsUser);
+        _log.info("新增用户,主键:userId={}", upmsUser.getUserId());
         return new UpmsResult(UpmsResultConstant.SUCCESS, count);
     }