日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

source code怎么用_code-builder代码生成器

發布時間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 source code怎么用_code-builder代码生成器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

本來code-builder是專門為MyBatis Enhance來編寫的一塊代碼生成器

code-builder可以用來做什么?

code-builder是一款代碼生成maven mojo插件,通過簡單的配置就可以完成數據庫內Table轉換Entity或者其他實體類,想怎么生成完全根據你的個人業務邏輯,code-builder盡可能的完善的提供數據庫內的一些定義的信息,讓你更方便更靈活的來生成Java文件。

使用環境

  • Maven構建的項目
  • JDK 1.6以上版本

實現方式

是怎么獲取到的數據庫信息?

code-builder內部采用了java.sql.Connection的MetaData元數據的方式來獲取數據庫內Table、Column等信息,MetaData是不局限于任何的數據庫類型的,所以code-builder在基礎設計上是可以在任何數據庫類型中來完成它的生成任務的,不過初版本僅支持了MySQL、MariaDB這兩種數據庫類型,在code-builder后期更新版本中會把主流的數據庫進行添加。

生成模板選型

目前code-builder內部采用了freemarker模板來完成實體類的自動生成,模板由使用者來自定義編寫,內部預留了使用其他模板的方式,如果你需要使用別的模板,如:Velocity,對應添加生成的實現業務邏輯即可。

怎么配置?

SpringBoot 方式配置

在1.0.5.RELEASE版本添加了集成SpringBoot的starter,依賴如下所示:

  • 使用Maven構建工具時,復制下面的內容到pom.xml配置文件內
com.gitee.hengboy code-builder-spring-boot-starter 1.0.5.RELEASE
  • 如果你是用的Gradle構建工具,那么復制下面的內容到你的build.gradle
compile group: 'com.gitee.hengboy', name: 'code-builder-spring-boot-starter', version: '1.0.5.RELEASE'

那么我們在application.yml或者application.properties配置文件內該怎么配置相關的參數呢?

hengboy: code: builder: execute: true configuration: package-prefix: com.code.builder.sample.codebuildersample templates: - name: entity.ftl packageName: model fileSuffix: Entity - name: service.ftl packageName: service fileSuffix: Service - name: controller.ftl packageName: controller fileSuffix: Controller generator-by-pattern: '%app_user_info%' db-type: mysql engine-type-enum: freemarker builder-dir: classes.templates.builder target-dir: generated-sources.java tables: - app_shop_type - app_user_exchange_good ignore-class-prefix: App

每個參數的具體介紹請往下看。

Maven Plugin 方式配置

由于code-builder是Maven mojo插件的形式創建的,所以我們只需要在項目的pom.xml文件內添加plugin插件配置,如下所示:

com.gitee.hengboy code-builder-maven-plugin 1.0.5.RELEASEgeneratormysql mysql-connector-java 5.1.46trueMySQLcom.mysql.jdbc.Driverxxxxxxxxxxxxxjdbc:mysql://xxx.xx.xx.xx:3306app_shop_typeapp_user_exchange_goodFREEMARKER%app_user_info%Appclasses.templates.buildercom.code.builder.sampleentity.ftlmodelservice.ftlserviceServicemapper.ftlmapperMapper

數據庫驅動依賴添加

code-builder不局限你使用的數據庫類型,所以在生成時需要使用者添加對應數據類型的依賴,如上面的配置中則是添加了MySQL數據庫的依賴

.....mysql mysql-connector-java 5.1.46.....

生成的控制開關

并不是每一次的編譯或者打包時都需要生成對應的實體,針對這種情況code-builder添加了execute參數來控制開啟與關閉。

  • true:開啟自動生成
  • false:關閉自動生成

數據庫類型配置

執行自動生成前需要配置數據庫的相關配置信息

  • dbType:數據庫類型,默認使用MySQL數據庫類型。
  • dbDriverClassName:數據庫驅動類名,根據不用的數據庫類型配置不同的驅動類名,默認根據dbType使用內部定義的類名,如需自定義可以設置。(僅maven-plugin使用)

數據庫基本信息配置 (僅maven-plugin使用)

  • dbName:數據庫名稱
  • dbUserName:數據庫用戶名
  • dbPassword:數據庫密碼
  • dbUrl:數據庫連接路徑,連接路徑不需要填寫數據庫名,正確示例如:jdbc:mysql://localhost:3306

生成表名符合規則的表

根據表達式來創建表,表達式與模糊查詢語句表達式一般無二,配置generatorByPattern參數并設置對應的表達式就可以根據表達式來匹配出參與生成的Table列表。

  • 指定前綴匹配
app_order%

示例:將會匹配出app_order_info、app_order_record等表。

  • 指定后綴匹配
%order

示例:將會匹配出app_good_order、app_exchange_order等表。

  • 包含匹配
%order%

示例:將會匹配出app_order_info、app_good_order等表。

生成指定表

code-builder支持指定單個或者多個表來生成,只需要配置tables參數即可,如下所示:

app_shop_typeapp_user_exchange_good

上面的配置是本次生成僅操作app_shop_type、app_user_exchange_good兩張表。

注意:tables參數的優先級要高于generatorByPattern參數。

自定義builder所需模板路徑

code-builder會自動去找classes/templates/builder下的模板,如果使用默認的freemarker模板來生成,那么模板所存放的位置為classes/templates/builder/freemarker。 如果你想自定義模板的路徑可以設置builderDir的地址,在這里因為考慮到了不同操作系統的分隔符不一樣(Windows系統分隔符,Linux以及O SX分隔符為/)所以這里采用.分隔符配置,code-builder會自動根據操作系統來轉換路徑,配置如下所示:

classes.code.builder

注意:freemarker文件夾不允許修改,只能修改code-builder加載模板的根路徑。

排除生成實體后的前綴

數據庫設計有時需要添加前綴,如:app_、sys_等,實際生成實體后前綴則是并不想展示,那么配置參數ignoreClassPrefix就可以自動排除前綴,如下所示:

App

注意:由于替換生成后的類名稱所以這里要準守駝峰命名規則首字母大寫,一次只能配置一個替換前綴。

使用前AppUserInfoEntity,使用后UserInfoEntity。

模板配置

使用templates標簽配置自定義的模板列表,一次可以使用單個或者多個模板進行生成,如下配置:

entity.ftlentityentityservice.ftlserviceServicemapper.ftlmapperMapper
  • name :freemarker目錄下模板的名稱,必填
  • packageName:生成該模板文件后的子包名稱,非必填
  • fileSuffix:生成文件的后綴,如:配置后綴為Entity,則添加后綴后的文件名為UserInfoEntity,后綴首字母會自動根據駝峰轉換成大寫

內置參數

模板驅動數據模型內置了部分參數,code-builder準備的每一個參數都是在生成實體類時都可能會用到的。

Table參數

  • tableName 表名,數據類型:java.lang.String
  • remark 表備注信息,數據類型:java.lang.String
  • entityName 實體類名稱,如:user_info轉換為userInfo,數據類型:java.lang.String
  • columns 列列表,數據類型:java.util.List
  • primaryKeys 主鍵列表,數據類型:java.util.List
  • hasSqlDate 是否存在java.sql.Date類型,true:存在,false:不存在,數據類型:java.lang.Boolean
  • hasTimeStamp 是否存在java.sql.TimeStamp類型,true:存在,false:不存在,數據類型:java.lang.Boolean
  • hasBigDecimal 是否存在java.math.BigDecimal類型,true:存在,false:不存在,數據類型:java.lang.Boolean

使用方式

freemarker模板:${table.xxx},如表名的使用為${table.tableName}

Column參數

  • columnName 列名,如:user_id,數據類型:java.lang.String
  • primaryKey 是否為主鍵,數據類型:java.lang.Boolean,true:主鍵,false:非主鍵
  • foreignKey 是否為外鍵,數據類型:java.lang.Boolean,true:外鍵,false:非外鍵
  • size 列長度,數據類型:java.lang.Integer
  • decimalDigits 小數點精度,數據類型:java.lang.Integer
  • nullable 列是否為空,數據類型:java.lang.Boolean,true:為空,false:非空
  • autoincrement 是否自增,數據類型:java.lang.Boolean,true:自增列,false:普通列
  • defaultValue 默認值,數據類型:java.lang.String
  • remark 列備注,數據類型:java.lang.String
  • jdbcType JDBC類型,對應java.sql.Types內類型,數據類型:java.lang.Integer
  • jdbcTypeName JDBC類型名稱,數據類型:java.lang.String
  • javaProperty 格式化后的屬性名稱,如:userId,數據類型:java.lang.String
  • javaType Java數據類型短名,如:TimeStamp,數據類型:java.lang.String
  • fullJavaType Java數據類型全名,如:java.sql.TimeStamp,數據類型:java.lang.String

使用方式

freemarker模板:${column.xxx},如列名的使用為${column.columnName}

基礎參數

  • className:Class名稱,freemarker指定模板生成文件的類名,模板內配置${className}使用
  • packageName:Package名稱,freemarker指定模板生成文件的包名,模板內配置${packageName}使用

怎么自定義模板?

下面提供一個簡單的模板示例,根據上面的內置參數可以任意自定義生成文件的內容。

package ${packageName};#if>import lombok.Data;import java.sql.Date;#if>import java.sql.Timestamp;#if>import java.math.BigDecimal;#if>/** *

本類代碼由code-builder自動生成

*

表名: ${table.tableName} - ${table.remark}

* =============================== * Created with code-builder. * User:恒宇少年 * Date:${.now} * 簡書:http://www.jianshu.com/u/092df3f77bca * 碼云:https://gitee.com/hengboy * ================================ */@Datapublic class ${className} { /** * ${key.columnName} - ${key.remark} */ private ${key.javaType} ${key.javaProperty};#list> /** * ${column.columnName} - ${column.remark} */ private ${column.javaType} ${column.javaProperty}; #if>#list>}

上面是一個數據實體的freemarker模板內容,把這個模板存放到freemarker目錄下,對應在templates標簽內添加配置就可以完成數據實體的自動創建,創建后的數據實體內容如下所示:

package com.code.builder.sample.model;import lombok.Data;import java.sql.Timestamp;/** *

本類代碼由code-builder自動生成

*

表名: app_balance_type - 余額類型信息表

* =============================== * Created with code-builder. * User:恒宇少年 * Date:Jul 17, 2018 9:09:13 PM * 簡書:http://www.jianshu.com/u/092df3f77bca * 碼云:https://gitee.com/hengboy * ================================ */@Datapublic class BalanceTypeEntity { /** * BT_ID - 余額類型主鍵 */ private String btId; /** * BT_NAME - 余額類型名稱 */ private String btName; /** * BT_FLAG - 余額類型標識 */ private String btFlag; /** * BT_CREATE_TIME - 添加時間 */ private Timestamp btCreateTime; /** * BT_MARK - 余額類型備注信息 */ private String btMark;}

創建的實體類去了哪里?

創建的實體類會在target/generated-sources/java目錄下,如果你配置packagePrefix參數,會自動在生成目錄下創建packagePrefix配置值的子目錄。 如:

com.code.builder.sample

則最終創建的生成根目錄為:target/generated-sources/java/com/code/builder/sample

怎么使用?

SpringBoot 方式使用

  • 運行項目就可以根據配置生成對應的文件
  • Maven Plugin 方式使用

  • 執行mvn clean命令用于清空target目錄下的內容
  • 執行mvn compile命令編譯項目并且生成實體類
  • 為什么SpringBoot方式不用配置數據庫信息?

    Maven Plugin方式是通過配置的數據庫連接信息以及數據庫連接驅動獲取數據庫連接對象Connection后來操作JDBC元數據。

    而SpringBoot方式則是直接使用項目中配置的DataSource對象實例來進行獲取的Connection數據庫連接對象后來操作JDBC元數據。

    注意:如果你是多數據源項目,默認會使用primary數據源實例。

    私信回復"code-builder"獲取鏈接地址,喜歡的點個關注,一起學習探討新技術。

    總結

    以上是生活随笔為你收集整理的source code怎么用_code-builder代码生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美男女视频 | 一区二区三区四区不卡 | 日韩免费视频一区二区视频在线观看 | 黄色av网站在线免费观看 | 黄色香蕉网站 | 久草视频福利 | 妹子色综合 | 成人免费一级 | 日韩中文字幕高清 | 国产精品国语自产拍在线观看 | 神马久久香蕉 | 一区二区韩国 | 爱爱网视频 | 亚洲伦理一区 | 98久久久 | 成人av专区 | 欧美少妇一区二区三区 | 国产精品一区二区免费在线观看 | 97色在线视频 | 日本黄色免费观看 | 男生草女生视频 | 黄色免费视频网站 | 亚洲熟妇av乱码在线观看 | 欧美久草视频 | 亚洲成熟少妇视频在线观看 | h片在线看 | 日韩国产中文字幕 | 久久视频这里只有精品 | 欧美日韩视频免费观看 | 综合久久国产 | 国产专区av | 久久精品视频国产 | 美女免费毛片 | 美国av片| 欧美黑人添添高潮a片www | 男生插女生视频在线观看 | 超碰加勒比 | 欧美成人一区二区在线 | 精品乱码久久久久久中文字幕 | 激情午夜影院 | 亚洲天堂免费观看 | 激情四射网站 | 国产成人精品视频在线观看 | 麻豆免费观看视频 | 久草资源网站 | 午夜精品国产精品大乳美女 | 麻豆久久精品 | va在线| 日本亲与子乱xxx | 在线你懂| 欧美成人dvd在线视频 | 精品国产久 | 日本中文字幕久久 | 日韩成人av网址 | 精品人妻无码一区二区三区换脸 | 国产在线精品播放 | 日韩久久久久 | 精品国产乱码久久久久久浪潮 | 少妇毛片视频 | 欧美久久久 | 午夜激情av | 国产一级高清 | 波多野结衣精品在线 | 夜夜添无码一区二区三区 | 乱lun合集男男高h | 久久人人爽人人爽人人片 | youjizz.com中国 | 日本二区在线观看 | 午夜黄色福利视频 | 日韩精品――色哟哟 | 综合亚洲欧美 | 超碰成人免费在线 | 国产精品久久久久久久免费看 | 在线黄色av网站 | 草久久av| 免费无遮挡在线观看视频网站 | 免费成人在线观看视频 | h欧美| 久久精品性爱视频 | 久草青青视频 | 亚洲天堂2024| www国产| 色香蕉在线视频 | 成人精品网址 | 麻豆影视av | 亚洲三级视频在线观看 | 播放灌醉水嫩大学生国内精品 | 白丝女仆被免费网站 | 91视频中文字幕 | 午夜久久精品 | 欧美肥老妇 | 婷婷激情四射 | 亚洲成av人片一区二区梦乃 | 亚洲一区在线不卡 | 伊人成年综合网 | 天堂av在线免费观看 | 波多野结衣激情视频 | 最近中文字幕无免费 | 亚洲色图另类图片 |