Spring Boot Code Generator!
-
基于SpringBoot2+xxl-codegenerator的代码生成器。用DDL语句生成JPA/JdbcTemplate/Mybatis相关代码,目前以JPA的为主,各大模板也在陆续优化。如果发现有SQL语句不能识别,请留言给我分析,谢谢!
-
+ 基于SpringBoot2+Freemarker的代码生成器,用DDL SQL语句生成JPA/JdbcTemplate/Mybatis相关代码,支持mysql/oracle/pgsql三大数据库。目前以JPA的为主,各大模板也在陆续优化。欢迎大家提交模板和交流想法,如果发现有SQL语句不能识别,请留言给我分析,谢谢!
+
@@ -85,7 +96,7 @@ CREATE TABLE `userinfo` (
-
+
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/beetlcontroller.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/beetlcontroller.ftl
new file mode 100644
index 0000000..1410985
--- /dev/null
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/beetlcontroller.ftl
@@ -0,0 +1,73 @@
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+import java.util.Map;
+
+/**
+* ${classInfo.classComment}
+* @author ${authorName} ${.now?string('yyyy-MM-dd')}
+*/
+@RestController
+@RequestMapping("/${classInfo.className?uncap_first}")
+public class ${classInfo.className}Controller {
+
+ @Autowired
+ private SQLManager sqlManager;
+
+ /**
+ * 新增或编辑
+ */
+ @PostMapping("/save")
+ public Object save(${classInfo.className} ${classInfo.className?uncap_first}){
+ ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,${classInfo.className?uncap_first}.getId());
+ if(${classInfo.className?uncap_first}!=null){
+ sqlManager.updateById(${classInfo.className?uncap_first});
+ return ApiReturnUtil.success("编辑成功");
+ }else{
+ sqlManager.insert(${classInfo.className?uncap_first});
+ return ApiReturnUtil.error("保存成功");
+ }
+ }
+
+ /**
+ * 删除
+ */
+ @PostMapping("/delete")
+ public Object delete(int id){
+ ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,id);
+ if(${classInfo.className?uncap_first}!=null){
+ sqlManager.deleteById(id);
+ return ApiReturnUtil.success("删除成功");
+ }else{
+ return ApiReturnUtil.error("没有找到该对象");
+ }
+ }
+
+ /**
+ * 查询
+ */
+ @PostMapping("/find")
+ public Object find(int id){
+ ${classInfo.className} ${classInfo.className?uncap_first}=sqlManager.unique(${classInfo.className}.class,id);
+ if(${classInfo.className?uncap_first}!=null){
+ return ApiReturnUtil.success(${classInfo.className?uncap_first});
+ }else{
+ return ApiReturnUtil.error("没有找到该对象");
+ }
+ }
+
+ /**
+ * 分页查询
+ */
+ @PostMapping("/list")
+ public Object list(${classInfo.className} ${classInfo.className?uncap_first},
+ @RequestParam(required = false, defaultValue = "0") int pageNumber,
+ @RequestParam(required = false, defaultValue = "10") int pageSize) {
+ List<${classInfo.className}> list = sqlManager.query(${classInfo.className}.class).select();
+ return ApiReturnUtil.error(list);
+ }
+
+}
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/beetlentity.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/beetlentity.ftl
new file mode 100644
index 0000000..9a272ee
--- /dev/null
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/beetlentity.ftl
@@ -0,0 +1,24 @@
+import java.io.Serializable;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+/**
+* ${classInfo.classComment}
+* @author ${authorName} ${.now?string('yyyy-MM-dd')}
+*/
+@Data
+public class ${classInfo.className} implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
+<#list classInfo.fieldList as fieldItem >
+ /**
+ * ${fieldItem.fieldComment}
+ */
+ private ${fieldItem.fieldClass} ${fieldItem.fieldName};
+
+#list>
+#if>
+
+}
\ No newline at end of file
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/beetlmd.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/beetlmd.ftl
new file mode 100644
index 0000000..2dcdb64
--- /dev/null
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/beetlmd.ftl
@@ -0,0 +1,31 @@
+sample
+===
+
+select #use("cols")# from ${classInfo.tableName} where #use("condition")#
+
+cols
+===
+<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
+ <#list classInfo.fieldList as fieldItem >
+ `${fieldItem.columnName}`<#if fieldItem_has_next>,#if>
+ #list>
+#if>
+
+updateSample
+===
+<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
+ <#list classInfo.fieldList as fieldItem >
+ `${fieldItem.columnName}=#${fieldItem.fieldName}#`<#if fieldItem_has_next>,#if>
+ #list>
+#if>
+
+condition
+===
+ 1 = 1
+<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
+ <#list classInfo.fieldList as fieldItem >
+ @if(!isEmpty(${fieldItem.fieldName})){
+ and `${fieldItem.columnName}`=#${fieldItem.fieldName}#
+ @}
+ #list>
+#if>
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/entity.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/entity.ftl
index 6da44db..d0c8e1b 100644
--- a/generator-web/src/main/resources/templates/xxl-code-generator/entity.ftl
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/entity.ftl
@@ -1,10 +1,3 @@
-<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
- <#list classInfo.fieldList as fieldItem >
- <#if fieldItem.fieldClass == "Date">
- <#assign importDdate = true />
- #if>
- #list>
-#if>
import java.io.Serializable;
import javax.persistence.*;
import lombok.Data;
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/jpacontroller.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/jpacontroller.ftl
index 6b7e7eb..c8126ef 100644
--- a/generator-web/src/main/resources/templates/xxl-code-generator/jpacontroller.ftl
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/jpacontroller.ftl
@@ -47,7 +47,7 @@ public class ${classInfo.className}Controller {
* 查询
*/
@GetMapping("/find")
- public Object load(int id){
+ public Object find(int id){
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Repository.findById(id);
if(${classInfo.className?uncap_first}.isPresent()){
return ApiReturnUtil.success(${classInfo.className?uncap_first}.get());
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/jtdaoimpl.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/jtdaoimpl.ftl
index 2351469..95e1211 100644
--- a/generator-web/src/main/resources/templates/xxl-code-generator/jtdaoimpl.ftl
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/jtdaoimpl.ftl
@@ -39,7 +39,7 @@ public class ${classInfo.className}DaoImpl implements I${classInfo.className}Dao
@Override
public ${classInfo.className} findById(int id) {
- List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break >#if>#list>#if> = ?", new Object[]{id}, new BeanPropertyRowMapper(${classInfo.className}.class));
+ List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName} where <#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0><#list classInfo.fieldList as fieldItem ><#if fieldItem_index = 0>${fieldItem.columnName}=?<#break >#if>#list>#if> = ?", new Object[]{id}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class));
if(list!=null && list.size()>0){
${classInfo.className} ${classInfo.className?uncap_first} = list.get(0);
return ${classInfo.className?uncap_first};
@@ -50,7 +50,7 @@ public class ${classInfo.className}DaoImpl implements I${classInfo.className}Dao
@Override
public List<${classInfo.className}> findAllList(Map params) {
- List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName}", new Object[]{}, new BeanPropertyRowMapper(${classInfo.className}.class));
+ List<${classInfo.className}> list = jdbcTemplate.query("select * from ${classInfo.tableName}", new Object[]{}, new BeanPropertyRowMapper<${classInfo.className}>(${classInfo.className}.class));
if(list!=null && list.size()>0){
return list;
}else{
diff --git a/generator-web/src/main/resources/templates/xxl-code-generator/model.ftl b/generator-web/src/main/resources/templates/xxl-code-generator/model.ftl
index d9e4675..79b2503 100644
--- a/generator-web/src/main/resources/templates/xxl-code-generator/model.ftl
+++ b/generator-web/src/main/resources/templates/xxl-code-generator/model.ftl
@@ -1,10 +1,3 @@
-<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
- <#list classInfo.fieldList as fieldItem >
- <#if fieldItem.fieldClass == "Date">
- <#assign importDdate = true />
- #if>
- #list>
-#if>
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@@ -14,7 +7,7 @@ import java.util.List;
* @author ${authorName} ${.now?string('yyyy-MM-dd')}
*/
public class ${classInfo.className} implements Serializable {
- private static final long serialVersionUID = 42L;
+ private static final long serialVersionUID = 1L;
<#if classInfo.fieldList?exists && classInfo.fieldList?size gt 0>
<#list classInfo.fieldList as fieldItem >