程式碼自動生成(三)
在上兩篇文章中講述瞭如何使用freemarker生成程式碼的方法,在第二篇的程式碼中存在幾個ftl格式的檔案,那麼在這篇文章中將貼出來對應的程式碼;
本來是打算在上一篇中完善好直接放上去的,中間因為牽涉到程式碼的變動,以及對應生成mybatis mapper.xml整合的完善等等原因,一直推到今天;
1.實體類對應的模板
2.dao對應的模板package ${packageName}; import java.io.Serializable; public class ${className} implements Serializable { private static final long serialVersionUID = 1L; <#list columns as column> private ${column.type.javaType} ${column.fieldName}; public void set${column.methodName}(${column.type.javaType} ${column.fieldName}){ this.${column.fieldName}=${column.fieldName}; } public ${column.type.javaType} get${column.methodName}(){ return ${column.fieldName}; } </#list> }
package ${packageName};
import ${basePath}.entity.${className};
import com.xx.wdcloud.mybatis.dao.BaseDao;
public interface ${className}Dao extends BaseDao<${className}, String> {
}
3.daoImpl對應的模板
package ${packageName}; import org.springframework.stereotype.Repository; import ${basePath}.dao.${className}Dao; import ${basePath}.entity.${className}; import com.xx.wdcloud.mybatis.dao.impl.BaseDaoImpl; @Repository public class ${className}DaoImpl extends BaseDaoImpl<${className}, String> implements ${className}Dao{ }
4.service對應的模板
package ${packageName};
import ${basePath}.entity.${className};
import com.xx.wdcloud.mybatis.service.BaseService;
public interface ${className}Service extends BaseService<${className}, String> {
}
5.serviceImpl對應的模板
package ${packageName}; import org.springframework.stereotype.Service; import ${basePath}.entity.${className}; import com.xx.wdcloud.mybatis.service.impl.BaseServiceImpl; import ${basePath}.service.${className}Service; @Service public class ${className}ServiceImpl extends BaseServiceImpl<${className}, String> implements ${className}Service{ }
6.mapper對應的模板
<?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="${packageName}.entity.${className}">
<resultMap id="BaseResultMap" type="${packageName}.entity.${className}">
<#list columns as column>
<#if column.isPK="yes">
<id property="id" column="${column.name}" />
<#else>
<result property="${column.fieldName}" column="${column.name}" />
</#if>
</#list>
</resultMap>
<sql id="Base_Column_List">
<#list columns as column>
<#if column.isPK="yes">
${column.name}<#if column.hasNext>,</#if>
<#else>
${column.name}<#if column.hasNext>,</#if>
</#if>
</#list>
</sql>
<sql id="Where_Clause_Id">
<#list columns as column>
<#if column.isPK="yes">
and ${column.name} = ${r"#{"}${column.fieldName}${r"}"}
</#if>
</#list>
</sql>
<sql id="Where_Clause_Normal">
<#list columns as column>
<#if column.isPK="no">
<if test="${column.fieldName} != null">
and ${column.name}=${r"#{"}${column.fieldName}${r"}"}
</if>
</#if>
</#list>
</sql>
<!--根據主鍵查詢 -->
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ${tableName}
<where>
<include refid="Where_Clause_Id" />
</where>
</select>
<!--根據主鍵刪除 -->
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from ${tableName}
<where>
<include refid="Where_Clause_Id" />
</where>
</delete>
<!--新增儲存 -->
<insert id="insert" parameterType="${packageName}.entity.${className}" keyProperty="id">
INSERT INTO ${tableName}
(
<include refid="Base_Column_List" />
)
VALUES(
<#list columns as column>
${r"#{"}${column.fieldName}${r"}"}<#if column.hasNext>,</#if>
</#list>
)
</insert>
<!--選擇性儲存-->
<insert id="insertSelective" parameterType="${packageName}.entity.${className}">
INSERT INTO ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
<#list columns as column>
<if test="${column.fieldName} !=null">
${column.name}<#if column.hasNext>,</#if>
</if>
</#list>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<#list columns as column>
<if test="${column.fieldName} !=null">
${r"#{"}${column.fieldName}${r"}"}<#if column.hasNext>,</#if>
</if>
</#list>
</trim>
</insert>
<!--根據主鍵選擇性更新部分欄位 -->
<update id="updateByPrimaryKeySelective" parameterType="${packageName}.entity.${className}">
update ${tableName}
<set>
<#list columns as column>
<if test="${column.fieldName} !=null">
${column.name} = ${r"#{"}${column.fieldName}${r"}"}<#if column.hasNext>,</#if>
</if>
</#list>
</set>
<where>
<include refid="Where_Clause_Id" />
</where>
</update>
<select id="listAllByParam" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ${tableName}
<where>
<#list columns as column>
<if test="${column.fieldName} !=null">
and ${column.name} = ${r"#{"}${column.fieldName}${r"}"}
</if>
</#list>
</where>
</select>
<update id="updateselectByIds" parameterType="java.util.Map" >
update
<set>
<#list columns as column>
<if test="${column.fieldName} !=null">
${column.name}=${r"#{"}${column.fieldName}${r"}"}<#if column.hasNext>,</#if>
</if>
</#list>
</set>
where <![CDATA[ id in (${r"#{"}idsIn${r"}"}) ]]>
</update>
<select id="listDatas" parameterType="java.util.Map" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from ${tableName}
<where>
<include refid="Where_Clause_Normal" />
</where>
<if test="orderCondition != null" >
order by ${r"#{"}orderCondition${r"}"},${r"#{"}orderDirection${r"}"}
</if>
<if test="offSet!=null" >
limit ${r"#{"}offSet${r"}"},${r"#{"}pageSize${r"}"}
</if>
</select>
<select id="countDatas" resultType="java.lang.Integer">
select count(id)
from ${tableName}
<where>
<include refid="Where_Clause_Normal" />
</where>
</select>
</mapper>
ok,上面的基本完成了從entity到service的模板生成,下面看一下test
package com.xx.common.code.autocode;
import java.io.IOException;
import java.sql.SQLException;
import freemarker.template.TemplateException;
public class AutoCodeGenerationDemo {
public static void main(String[] args) throws ClassNotFoundException, IOException, TemplateException, SQLException {
String url="jdbc:mysql://10.67.18.17:3306/xx";
String username="xx";
String password="xx";
String driver="com.mysql.jdbc.Driver";
String tableName="t_test_operate_log";
String basePath="com.xx.test";
String templateDir=System.getProperty("user.dir")+"/src/main/java/"+"com/xx/common/code/template";
String generateFilePath=System.getProperty("user.dir")+"/src/main/java/"+basePath.replace(".", "/");
AutoGenerationJavaCode autoGenerationJavaCode=
new AutoGenerationJavaCode(url, username, password, driver, tableName, generateFilePath, "com.xx.test");
autoGenerationJavaCode.autoGenerationJavaCode();
/*AutoCodeGenerationDemo demo=new AutoCodeGenerationDemo();
demo.getPath();*/
}
public void getPath(){
System.out.println(this.getClass().getResource("/").getPath());;
System.out.println(this.getClass().getResource("").getPath());
System.out.println(this.getClass().getResource("/").getFile());
System.out.println(this.getClass().getResource("").getFile());
System.out.println(System.getProperty("user.dir"));
System.out.println(System.getProperty("java.class.path"));
}
}
相關推薦
程式碼自動生成(三)
在上兩篇文章中講述瞭如何使用freemarker生成程式碼的方法,在第二篇的程式碼中存在幾個ftl格式的檔案,那麼在這篇文章中將貼出來對應的程式碼; 本來是打算在上一篇中完善好直接放上去的,中間因為牽涉到程式碼的變動,以及對應生成mybatis mapper.xml整合的
程式碼自動生成(二)資料庫表字段生成mybaties 對映配置檔案**mapper.xml
上一篇寫的是根據資料庫欄位生成java bean,雖然有一些缺陷,但是大家可以根據字的需求進行優化,本篇部落格寫的是根據資料庫表字段生成mybaties 對映配置檔案**mapper.xml,之後還會陸續更新mybaties對應的介面。歡迎大家來點評,指出不足之處。 下面
實現一個程式碼自動生成(一):模板引擎Freemarker
目錄 前言 模板引擎FreeMarker 模板引擎是什麼? FreeMarker是什麼? FreeMarker如何使用? 加入依賴 建立Configuratio
Mybatis -程式碼自動生成(generatorConfig.xml)配置資訊詳解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1
Mybatis最入門---程式碼自動生成(generatorConfig.xml配置)
第一種方式:通過Main方法執行配置檔案。 -------------------------------------------------------------------------------------------------------------------------------------
Mybatis -程式碼自動生成(generatorConfig.xml)
對於一個欄位太多的表,如果一個一個的去寫 mapper和pojo太累還容易出錯,可用mybatis的工具處理這些事情 1. 環境: Maven 3.39 Oracle 11g Mybatis 3.4.1 Maven project
程式碼自動生成(-)資料庫表字段轉換成java bean
最近做系統老做一些相同的工作,就想寫一自動生成程式碼的工具類來方便以後的開法,我從網上整理修改了一些方法感覺還不錯,接下來我還陸續跟新一些自動生成程式碼的工具類,希望對大家有用。覺得不好輕點噴。import java.io.BufferedWriter; import
【原創】Hibernate自動生成(2)
成了 OS class 項目重構 alt index AS url 改名 本實戰是博主初次學習Java,分析WCP源碼時,學習HibernateTools部分的實戰,由於初次接觸,難免錯誤,僅供參考,希望批評指正。 開發環境: Eclipse Version: Photo
關於姿態解算與融合的程式碼註釋篇(三)
加速度計和陀螺儀都能計算出姿態,但為何要對它們融合呢,是因為加速度計對振動之類的擾動很敏感,但長期資料計算出的姿態可信,而陀螺儀雖然對振動這些不敏感,但長期使用陀螺儀會出現漂移,因此我們要進行互補,短期相信陀螺,長期相信加計。不過,其實加計無法對航向角進行
Android 學習之《Android程式設計權威指南》第二版 程式碼+筆記整理(三)
(程式碼)解決GeoQuiz應用旋轉恢復第一題的BUG 一、產生BUG的原因 1. 裝置旋轉時,系統會銷燬當前的QuizActivity例項,然後建立一個新的例項,這時陣列索引(mCurrentIndex)會初始化為0,因此使用者看到的還是第一道題目。 2.
第X屆智慧車攝像頭組程式碼全解析------(三)初始化配置
作者:Sumjess 本次部落格內容: 該初始化函式下有以下語句: 一、key_init(KEY_MAX); --- 按鍵初始化: 用在山外的lcd上,直接呼叫山外的庫函式,該函式內部並無修改,截圖如下
jQuery選擇器程式碼詳解(三)——tokenize方法
原創文章,轉載請註明出處,多謝! /* * tokenize方法是選擇器解析的核心函式,它將選擇器轉換成兩級陣列groups * 舉例: * 若選擇器為“div.class,span”,則解析後的結果為: * group[0][0] = {type
Faster RCNN程式碼詳解(三):資料處理的整體結構
在上一篇部落格中介紹了Faster RCNN網路結構的構建:Faster RCNN程式碼詳解(二):網路結構構建。網路結構是Faster RCNN演算法中最重要兩部分之一,這篇部落格將介紹非常重要的另一部分:資料處理。 資料處理是通過AnchorLoader類
swift程式碼之路(三)AF網路請求
建立資料請求類 import UIKit import AFNetworking //請求方法 /// - GET: get /// - POST: post enum RequsetMethod:String { case GET = "GET" ca
RPG遊戲《黑暗之光》流程介紹與程式碼分析之(三):角色控制系統的實現
第三章:角色控制本篇部落格主要對人物移動及其相關操作進行分析,主要包括主角以及鏡頭的移動。在遊戲介面中,我們使用Camera作為視角。為了方便之後判斷當前tag,我們新建一個Tag指令碼,存入一些tag資訊,之後呼叫就不容易出錯using UnityEngine; using
Spring boot入門(三):SpringBoot整合結合AdminLTE(Freemarker),利用generate自動生成程式碼,利用DataTable和PageHelper進行分頁顯示
關於SpringBoot和PageHelper,前篇部落格已經介紹過Spring boot入門(二):Spring boot整合MySql,Mybatis和PageHelper外掛,前篇部落格大致講述了SpringBoot如何整合Mybatis和Pagehelper,但是沒有做出實際的範例,本篇部落格是連
【從零開始搭建自己的.NET Core Api框架】(三)集成輕量級ORM——SqlSugar:3.3 自動生成實體類
i++ 點運算 自己的 yui content project style ref 數據庫表 系列目錄 一. 創建項目並集成swagger 1.1 創建 1.2 完善 二. 搭建項目整體架構 三. 集成輕量級ORM框架——SqlSugar 3.1 搭建環境
spring boot 整合 mybatis(含程式碼自動生成)
環境簡介:Idea ,JDK8,MAVEN 開工: 第一步建立專案 第二步選擇maven依賴 第三步,補充自己需要用到的maven依賴(通過工具沒法自動完成的) <?xml version="1.0" encoding="UTF-8"?> <project xmlns="
Spring Boot (七)MyBatis程式碼自動生成和輔助外掛
一、簡介 1.1 MyBatis Generator介紹 MyBatis Generator 是MyBatis 官方出品的一款,用來自動生成MyBatis的 mapper、dao、entity 的框架,讓我們省去規律性最強的一部分最基礎的程式碼編寫。 1.2 MyBatis Generator使用 MyBat
mybatis-generator程式碼快速自動生成(已經寫好程式碼給你了)
mybatis-generator程式碼快速自動生成: 沒有實習之前寫的MyBatis的Mapping.XML都是手寫的,實習老大教了如何快速利用mybatis-generator程式碼自動生成工具來快速書寫xml,現在分享給大家。 1.首先,我先建立一個stu