@@ -1,5 +1,6 @@ | |||
package com.qmrz.generator; | |||
import com.qmrz.exception.ABException; | |||
import com.qmrz.service.TableService; | |||
import com.qmrz.utils.CGHelper; | |||
import com.qmrz.utils.Fn; | |||
@@ -7,6 +8,7 @@ import com.qmrz.utils.MapUtil; | |||
import com.qmrz.utils.SpringContextUtil; | |||
import org.apache.commons.lang.StringUtils; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.stream.Collectors; | |||
@@ -28,17 +30,53 @@ public class MapperGenerator { | |||
List<Map> tableList = tableService.getTableList(dbName); | |||
List<Map> columnList = tableService.getColumnList(dbName); | |||
Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); | |||
Map<String, List<Map>> result = columnList.stream().collect(Collectors.groupingBy(map -> Fn.toString(map.get("table_name")), Collectors.toList())); | |||
CGHelper cgHelper = new CGHelper("mapper.ftl", dbName); | |||
CGHelper cgHelper = new CGHelper("mapper2.ftl", dbName); | |||
tableList.forEach(item -> { | |||
String table_name = item.get("table_name").toString(); | |||
String table_name2 = Fn.firstUpperCase(table_name); | |||
item.put("columnList", result.get(table_name)); | |||
List<Map> tmpColumnList = result.get(table_name); | |||
List<String> orderByList = new ArrayList<>(); | |||
tmpColumnList.stream().filter(i -> { | |||
String tmpColumnName = Fn.toString(i.get("column_name")); | |||
if ("createdatetime".equals(tmpColumnName)) { | |||
orderByList.add("t."+tmpColumnName + " desc"); | |||
return true; | |||
} | |||
return false; | |||
}).findFirst(); | |||
StringBuilder primaryKeyName = new StringBuilder(); | |||
tmpColumnList.stream().filter(i -> { | |||
if ("PRI".equals(Fn.toString(i.get("column_key")))) { | |||
orderByList.add("t."+Fn.toString(i.get("column_name")) + " desc"); | |||
primaryKeyName.append(Fn.toString(i.get("column_name"))); | |||
return true; | |||
} | |||
return false; | |||
}).findFirst(); | |||
if (primaryKeyName.length() == 0) { | |||
throw new ABException("表 " + table_name + " 没有主键"); | |||
} | |||
String orderBy = ""; | |||
if (orderByList.size() > 0) { | |||
orderBy = "order by " + String.join(",", orderByList); | |||
} | |||
item.put("columnList", tmpColumnList); | |||
item.put("dbname", dbName); | |||
item.put("table_name2",table_name2);//首字母大写 | |||
cgHelper.generator("mapper", table_name2 + "Mapper.xml", item); | |||
item.put("table_name2", table_name2);//首字母大写 | |||
item.put("orderBy", orderBy); | |||
item.put("primaryKeyName", primaryKeyName.toString()); | |||
cgHelper.generator("mapper2", table_name2 + "Mapper.xml", item); | |||
}); | |||
} | |||
} |
@@ -0,0 +1,47 @@ | |||
package com.qmrz.generator; | |||
import com.qmrz.service.TableService; | |||
import com.qmrz.utils.CGHelper; | |||
import com.qmrz.utils.Fn; | |||
import com.qmrz.utils.SpringContextUtil; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.stream.Collectors; | |||
/** | |||
* Service生成 | |||
*/ | |||
public class Service2Generator { | |||
private TableService tableService; | |||
private String dbName; | |||
public Service2Generator(String dbName) { | |||
tableService = SpringContextUtil.getBean(TableService.class); | |||
this.dbName = dbName; | |||
} | |||
public void generator() { | |||
List<Map> tableList = tableService.getTableList(dbName); | |||
List<Map> columnList = tableService.getColumnList(dbName); | |||
Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); | |||
CGHelper cgHelper = new CGHelper("service2.ftl", dbName); | |||
tableList.forEach(item -> { | |||
String table_name = item.get("table_name").toString(); | |||
String table_name2 = Fn.firstUpperCase(table_name); | |||
//去下划线且每个单词首字母大写 | |||
table_name2 = Arrays.stream(table_name2.split("_")).map(Fn::firstUpperCase).collect(Collectors.joining()); | |||
item.put("columnList", result.get(table_name)); | |||
item.put("dbname", dbName); | |||
item.put("table_name2",table_name2);//首字母大写 | |||
cgHelper.generator("service2", table_name2 + "Service.java", item); | |||
}); | |||
} | |||
} |
@@ -0,0 +1,47 @@ | |||
package com.qmrz.generator; | |||
import com.qmrz.service.TableService; | |||
import com.qmrz.utils.CGHelper; | |||
import com.qmrz.utils.Fn; | |||
import com.qmrz.utils.SpringContextUtil; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.stream.Collectors; | |||
/** | |||
* ServiceImpl生成 | |||
*/ | |||
public class Service2ImplGenerator { | |||
private TableService tableService; | |||
private String dbName; | |||
public Service2ImplGenerator(String dbName) { | |||
tableService = SpringContextUtil.getBean(TableService.class); | |||
this.dbName = dbName; | |||
} | |||
public void generator() { | |||
List<Map> tableList = tableService.getTableList(dbName); | |||
List<Map> columnList = tableService.getColumnList(dbName); | |||
Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); | |||
CGHelper cgHelper = new CGHelper("service2Impl.ftl", dbName); | |||
tableList.forEach(item -> { | |||
String table_name = item.get("table_name").toString(); | |||
String table_name2 = Fn.firstUpperCase(table_name); | |||
//去下划线且每个单词首字母大写 | |||
table_name2 = Arrays.stream(table_name2.split("_")).map(Fn::firstUpperCase).collect(Collectors.joining()); | |||
item.put("columnList", result.get(table_name)); | |||
item.put("dbname", dbName); | |||
item.put("table_name2",table_name2);//首字母大写 | |||
cgHelper.generator("service2Impl", table_name2 + "ServiceImpl.java", item); | |||
}); | |||
} | |||
} |
@@ -12,9 +12,12 @@ spring: | |||
db: | |||
driver: com.mysql.cj.jdbc.Driver | |||
# url: jdbc:mysql://qmrz.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrz?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC | |||
url: jdbc:mysql://qmrz-ga.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrzga-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC | |||
# url: jdbc:mysql://qmrz-ga.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrzga-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC | |||
# username: qmrz | |||
# password: Qmrz2018 | |||
url: jdbc:mysql://qmrz.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/ga-users-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC | |||
username: qmrz | |||
password: Qmrz2018 | |||
password: Qmrz2018.x | |||
logging: | |||
level: | |||
@@ -0,0 +1,96 @@ | |||
<?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"> | |||
<!-- | |||
${table_name}(${table_comment}) | |||
注意:分隔线以下 不增加业务,有新增自定义业务时加到分隔线上面 | |||
--> | |||
<mapper namespace="com.qmrz.domain.mapper.${table_name2}Mapper"> | |||
<!-- ========================= 分隔线以下为生成的通用代码 ========================= --> | |||
<!-- | |||
注意: | |||
1、增加条件必须增加 _parameter.containsKey | |||
2、修改字段手动更改此文件,不推荐重新生成后全部覆盖 | |||
--> | |||
<!-- 通用查询条件 --> | |||
<sql id="common_where"> | |||
<#list columnList as item> | |||
<if test="_parameter.containsKey('where_${item.column_name}')">and t.${item.column_name} = ${"#"}{where_${item.column_name}}</if> | |||
</#list> | |||
<#list columnList as item> | |||
<if test="_parameter.containsKey('like_${item.column_name}')">and t.${item.column_name} like concat('%',${"#"}{like_${item.column_name}},'%')</if> | |||
</#list> | |||
<if test="_parameter.containsKey('list_${primaryKeyName}')"> | |||
and t.${primaryKeyName} in | |||
<foreach collection="list_${primaryKeyName}" item="item" open="(" separator="," close=")"> | |||
${"#"}{item} | |||
</foreach> | |||
</if> | |||
</sql> | |||
<!-- 通用查询记录 --> | |||
<select id="selectList" resultType="java.util.LinkedHashMap"> | |||
select <#list columnList as item>t.${item.column_name}<#if item_has_next>,</#if></#list> | |||
from ${table_name} t | |||
<where> | |||
<include refid="common_where" /> | |||
</where> | |||
${orderBy} | |||
<if test="_parameter.containsKey('__limit__')"> | |||
<#noparse>limit #{__limit__}</#noparse> | |||
</if> | |||
</select> | |||
<!-- 通用查询记录总数 --> | |||
<select id="selectCount" resultType="Integer"> | |||
select count(0) as cou from ${table_name} t | |||
<where> | |||
<include refid="common_where" /> | |||
</where> | |||
</select> | |||
<!-- 通用插入数据 --> | |||
<insert id="insert"> | |||
insert into ${table_name}( | |||
<trim suffixOverrides=","> | |||
<#list columnList as item> | |||
<if test="_parameter.containsKey('${item.column_name}')">${item.column_name},</if> | |||
</#list> | |||
</trim>) | |||
values( | |||
<trim suffixOverrides=","> | |||
<#list columnList as item> | |||
<if test="_parameter.containsKey('${item.column_name}')">${"#"}{${item.column_name}},</if> | |||
</#list> | |||
</trim> | |||
) | |||
</insert> | |||
<!-- 通用更新数据 --> | |||
<update id="update"> | |||
update ${table_name} t | |||
<set> | |||
<#list columnList as item> | |||
<#if item.column_key?? && item.column_key!="PRI" || item.column_name?? && item.column_name != "id"> | |||
<if test="_parameter.containsKey('${item.column_name}')">t.${item.column_name} = ${"#"}{${item.column_name}},</if> | |||
</#if> | |||
</#list> | |||
</set> | |||
<where> | |||
<include refid="common_where" /> | |||
</where> | |||
</update> | |||
<!-- 通用删除记录 --> | |||
<delete id="delete"> | |||
delete t from ${table_name} t | |||
<where> | |||
<include refid="common_where" /> | |||
</where> | |||
</delete> | |||
</mapper> |
@@ -1,8 +1,5 @@ | |||
package com.qmrz.service; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* ${table_name},${table_comment} | |||
* Automatic generation | |||
@@ -0,0 +1,10 @@ | |||
package com.qmrz.service; | |||
import com.qmrz.interfaces.baseservice.IServiceV2; | |||
/** | |||
* ${table_name},${table_comment} | |||
*/ | |||
public interface ${table_name2}Service extends IServiceV2 { | |||
} |
@@ -0,0 +1,17 @@ | |||
package com.qmrz.service.impl; | |||
import com.qmrz.interfaces.baseservice.AbsServiceImplV2; | |||
import com.qmrz.service.${table_name2}Service; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.stereotype.Service; | |||
/** | |||
* ${table_name},${table_comment} | |||
*/ | |||
@Slf4j | |||
@Service | |||
public class ${table_name2}ServiceImpl extends AbsServiceImplV2 implements ${table_name2}Service { | |||
public ${table_name2}ServiceImpl(){ | |||
super("${table_name}"); | |||
} | |||
} |
@@ -1,13 +1,9 @@ | |||
package com.qmrz.service.impl; | |||
import com.qmrz.service.${table_name2}Service; | |||
import com.qmrz.utils.MapUtil; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.stereotype.Service; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* ${table_name},${table_comment} | |||
* Automatic generation | |||
@@ -10,7 +10,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | |||
@RunWith(SpringJUnit4ClassRunner.class) | |||
@SpringBootTest(classes = CodeGenerator.class) | |||
public class TestCodeGenerator { | |||
private String dbname="qmrzga-dev"; | |||
// private String dbname="ga-dp-dev"; | |||
private String dbname="psbd-dev"; | |||
// private String dbname="ga-hotelmanage-dev"; | |||
/** | |||
* 生成所有 | |||
*/ | |||
@@ -18,13 +20,14 @@ public class TestCodeGenerator { | |||
public void generatorAll() { | |||
readme(); | |||
mapper(); | |||
service(); | |||
serviceImpl(); | |||
// service(); | |||
service2(); | |||
// serviceImpl(); | |||
service2Impl(); | |||
controller(); | |||
interface2(); | |||
} | |||
/** | |||
* readme 生成 | |||
*/ | |||
@@ -60,6 +63,15 @@ public class TestCodeGenerator { | |||
generator.generator(); | |||
} | |||
/** | |||
* service 生成 | |||
*/ | |||
@Test | |||
public void service2() { | |||
Service2Generator generator = new Service2Generator(dbname); | |||
generator.generator(); | |||
} | |||
/** | |||
* serviceImpl 生成 | |||
*/ | |||
@@ -69,6 +81,15 @@ public class TestCodeGenerator { | |||
generator.generator(); | |||
} | |||
/** | |||
* serviceImpl 生成 | |||
*/ | |||
@Test | |||
public void service2Impl() { | |||
Service2ImplGenerator generator = new Service2ImplGenerator(dbname); | |||
generator.generator(); | |||
} | |||
/** | |||
* controller 生成 | |||
*/ | |||
@@ -25,7 +25,7 @@ | |||
<description>代码生成器</description> | |||
<modules> | |||
<module>common</module> | |||
<module>service</module> | |||
<module>code-generator</module> | |||
</modules> | |||
<!--<properties>--> | |||