задний план
первоначальноcode-builder
специально дляMyBatis Enhance
написать генератор кода, но только используяEnhance
Но в этом нет ничего нового, поэтому генерация отделена и предоставлена всем для использования в надежде оказать некоторую помощь в повышении эффективности исследований и разработок проекта.
Для чего можно использовать конструктор кода?
code-builder
это генератор кодаmaven mojo
Плагин, через простую настройку может завершить базу данныхTable
конвертироватьEntity
Или другие классы сущностей, способ их создания полностью основан на вашей личной бизнес-логике,code-builder
Предоставьте некоторую определенную информацию в базе данных как можно более полной, что позволит вам создавать более удобные и гибкиеJava
документ.
Добро пожаловать в публичный аккаунт
Обратите внимание на публичный аккаунт WeChat и ответьте加群
для получения идентификатора группы связи.
Адрес источника
- Адрес облака кода:git ee.com/sh-wave-with/cod…
- Адрес гитхаба:GitHub.com/Hengyuboyou/От…
Добро пожаловать в Code Cloud for Issue, дайте мне звезду, если вам это нравится
Использовать среду
-
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.3.RELEASE
версия добавлена интеграцияSpringBoot
изstarter
, зависимости следующие:
- использовать
Maven
При создании инструмента скопируйте следующее вpom.xml
в файле конфигурации
<dependency>
<groupId>com.gitee.hengboy</groupId>
<artifactId>code-builder-spring-boot-starter</artifactId>
<version>1.0.3.RELEASE</version>
</dependency>
- если вы используете
Gradle
инструменты сборки, а затем скопируйте следующее в свойbuild.gradle
compile group: 'com.gitee.hengboy', name: 'code-builder-spring-boot-starter', version: '1.0.3.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
так какcode-builder
даMaven mojo
создан в виде плагина, поэтому нам нужно толькоpom.xml
добавить в файлplugin
Конфигурация плагина следующая:
<plugin>
<groupId>com.gitee.hengboy</groupId>
<artifactId>code-builder-maven-plugin</artifactId>
<version>1.0.3.RELEASE</version>
<executions>
<execution>
<goals>
<goal>generator</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
<configuration>
<execute>true</execute>
<dbType>MySQL</dbType>
<dbDriverClassName>com.mysql.jdbc.Driver</dbDriverClassName>
<dbName>xxxx</dbName>
<dbUserName>xxxx</dbUserName>
<dbPassword>xxxxx</dbPassword>
<dbUrl>jdbc:mysql://xxx.xx.xx.xx:3306</dbUrl>
<tables>
<table>app_shop_type</table>
<table>app_user_exchange_good</table>
</tables>
<engineType>FREEMARKER</engineType>
<generatorByPattern>%app_user_info%</generatorByPattern>
<ignoreClassPrefix>App</ignoreClassPrefix>
<builderDir>classes.templates.builder</builderDir>
<builder>
<packagePrefix>com.code.builder.sample</packagePrefix>
<templates>
<template>
<name>entity.ftl</name>
<packageName>model</packageName>
</template>
<template>
<name>service.ftl</name>
<packageName>service</packageName>
<fileSuffix>Service</fileSuffix>
</template>
<template>
<name>mapper.ftl</name>
<packageName>mapper</packageName>
<fileSuffix>Mapper</fileSuffix>
</template>
</templates>
</builder>
</configuration>
</plugin>
Добавлена зависимость, управляемая базой данных
code-builder
Он не ограничен типом используемой вами базы данных, поэтому пользователям необходимо добавить зависимость соответствующего типа данных при создании, например, в приведенной выше конфигурации.MySQL
зависимость от базы данных
.....
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
.....
просто используя
Maven-Plugin
Добавьте в форму зависимости, управляемые данными
Сгенерированный переключатель управления
не каждый раз编译
или打包
Когда необходимо создать соответствующую сущность, для этого случаяcode-builder
Добавленexecute
параметры для включения и выключения.
-
true
: включить автоматическую генерацию -
false
: отключить автоматическую генерацию
Конфигурация типа базы данных
Перед выполнением автоматической генерации вам необходимо настроить соответствующую информацию о конфигурации базы данных.
-
dbType
: тип базы данных, используемый по умолчаниюMySQL
Тип базы данных. -
dbDriverClassName
: имя класса драйвера базы данных, настройте разные имена классов драйверов в соответствии с различными типами баз данных, значение по умолчанию основано наdbType
Используйте внутренне определенное имя класса, вы можете установить его, если вам нужно его настроить.(仅maven-plugin使用)
Конфигурация базовой информации базы данных (используется только maven-plugin)
-
dbName
:Имя базы данных -
dbUserName
:имя пользователя базы данных -
dbPassword
: пароль базы данных -
dbUrl
: путь подключения к базе данных, путь подключения не должен заполнять имя базы данных, правильный пример:jdbc:mysql://localhost:3306
Генерировать таблицы с именами таблиц, которые соответствуют правилам
Создавайте таблицы на основе выражений. Выражения обычно аналогичны выражениям нечетких запросов.generatorByPattern
параметры и установить соответствующее выражение, вы можете сопоставить сгенерированные компоненты в соответствии с выражением.Table
список.
- указанное совпадение префикса
<generatorByPattern>app_order%</generatorByPattern>
Пример: будет соответствоватьapp_order_info
,app_order_record
Стол ожидания.
- указанный суффикс совпадает
<generatorByPattern>%order</generatorByPattern>
Пример: будет соответствоватьapp_good_order
,app_exchange_order
Стол ожидания.
- содержит совпадения
<generatorByPattern>%order%</generatorByPattern>
Пример: будет соответствоватьapp_order_info
,app_good_order
Стол ожидания.
Создать указанную таблицу
code-builder
Поддержка указания одной или нескольких таблиц для создания, нужно только настроитьtables
параметры следующим образом:
<tables>
<table>app_shop_type</table>
<table>app_user_exchange_good</table>
</tables>
Приведенная выше конфигурация является единственной операцией для этого поколения.app_shop_type
,app_user_exchange_good
две таблицы.
Уведомление:
tables
параметры имеют приоритет надgeneratorByPattern
параметр.
Путь к шаблону требуется для пользовательского компоновщика
code-builder
автоматически найдетclasses/templates/builder
шаблон под, если используется значение по умолчаниюfreemarker
шаблон для создания, то место, где хранится шаблон,classes/templates/builder/freemarker
.
Если вы хотите настроить путь к шаблону, вы можете установитьbuilderDir
адрес, здесь потому, что разделители разных операционных систем считаются разными (Windows
системный разделитель\
,Linux
а такжеO SX
Разделитель/
), так что здесь мы используем.
конфигурация разделителя,code-builder
Путь автоматически преобразуется в соответствии с операционной системой, и конфигурация выглядит следующим образом:
<builderDir>classes.code.builder</builderDir>
Уведомление:
freemarker
Папки не могут быть изменены, только измененыcode-builder
Корневой путь для загрузки шаблонов.
Исключить префиксы после создания сущностей
Дизайн базы данных иногда требует добавления префиксов, таких как:app_
,sys_
д., префикс после фактической генерации сущности не предназначен для отображения, то параметры конфигурацииignoreClassPrefix
Префикс может быть автоматически исключен следующим образом:
<ignoreClassPrefix>App</ignoreClassPrefix>
Примечание. Из-за замены сгенерированного имени класса здесь должна соблюдаться первая буква правила именования регистра верблюдов, и за один раз можно настроить только один префикс замены.
перед использованиемAppUserInfoEntity
,После использованияUserInfoEntity
.
Конфигурация шаблона
использоватьtemplates
Список пользовательских шаблонов для конфигурации тегов, которые можно создать с использованием одного или нескольких шаблонов одновременно:
<templates>
<template>
<name>entity.ftl</name>
<packageName>entity</packageName>
<fileSuffix>entity</fileSuffix>
</template>
<template>
<name>service.ftl</name>
<packageName>service</packageName>
<fileSuffix>Service</fileSuffix>
</template>
<template>
<name>mapper.ftl</name>
<packageName>mapper</packageName>
<fileSuffix>Mapper</fileSuffix>
</template>
</templates>
-
name
:freemarker
Имя шаблона в каталоге,必填
-
packageName
: имя подпакета после создания файла шаблона,非必填
-
fileSuffix
: Суффикс сгенерированного файла, например: суффикс конфигурацииEntity
, имя файла после добавления суффиксаUserInfoEntity
, первая буква суффикса будет автоматически преобразована в верхний регистр в соответствии с верблюжьим регистром
Встроенные параметры
Модель данных на основе шаблона имеет несколько встроенных параметров,code-builder
Каждый подготовленный параметр может использоваться при создании класса сущности.
Параметр таблицы
-
tableName
表名
,тип данных:java.lang.String
-
remark
表备注信息
,тип данных:java.lang.String
-
entityName
实体类名称
,как:user_info
преобразовать вuserInfo
,тип данных:java.lang.String
-
columns
列列表
,тип данных:java.util.List<Column>
-
primaryKeys
主键列表
,тип данных:java.util.List<Column>
-
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}
Параметр столбца
-
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
: имя класса, freemarker указывает имя класса файла, сгенерированного шаблоном, настроенного в шаблоне.${className}
использовать -
packageName
: имя пакета, freemarker указывает имя пакета сгенерированного файла шаблона, конфигурация в шаблоне${packageName}
использовать
Как настроить шаблон?
Ниже приведен простой пример шаблона, основанный на приведенном выше内置参数
Содержимое сгенерированного файла можно настроить произвольно.
<#if (packageName)??>
package ${packageName};
</#if>
import lombok.Data;
<#if (table.hasSqlDate)>
import java.sql.Date;
</#if>
<#if (table.hasTimeStamp)>
import java.sql.Timestamp;
</#if>
<#if (table.hasBigDecimal)>
import java.math.BigDecimal;
</#if>
/**
* <p>本类代码由code-builder自动生成</p>
* <p>表名: ${table.tableName} - ${table.remark}</p>
* ===============================
* Created with code-builder.
* User:恒宇少年
* Date:${.now}
* 简书:http://www.jianshTu.com/u/092df3f77bca
* 码云:https://gitee.com/hengboy
* ================================
*/
@Data
public class ${className} {
<#list table.primaryKeys as key>
/**
* ${key.columnName} - ${key.remark}
*/
private ${key.javaType} ${key.javaProperty};
</#list>
<#list table.columns as column>
<#if (!column.primaryKey)>
/**
* ${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;
/**
* <p>本类代码由code-builder自动生成</p>
* <p>表名: app_balance_type - 余额类型信息表</p>
* ===============================
* Created with code-builder.
* User:恒宇少年
* Date:Jul 17, 2018 9:09:13 PM
* 简书:http://www.jianshTu.com/u/092df3f77bca
* 码云:https://gitee.com/hengboy
* ================================
*/
@Data
public 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
Подкаталог для значений конфигурации.
как:
<packagePrefix>com.code.builder.sample</packagePrefix>
Тогда окончательный сгенерированный корневой каталог:target/generated-sources/java/com/code/builder/sample
как пользоваться?
Способ использования SpringBoot
-
运行项目
Соответствующий файл может быть сгенерирован в соответствии с конфигурацией
Способ использования плагина Maven
- воплощать в жизнь
mvn clean
команда очиститьtarget
содержимое каталога - воплощать в жизнь
mvn compile
команда для компиляции проекта и генерации实体类
Почему SpringBoot не нужно настраивать информацию о базе данных?
Maven Plugin
путь настраивается数据库连接信息
И драйвер подключения к базе данных получает объект подключения к базе данныхConnection
более поздняя операцияJDBC元数据
.
иSpringBoot
Способ заключается в непосредственном использовании конфигурации в проектеDataSource
экземпляр объекта для полученияConnection
Объект подключения к базе данных, который будет работать позжеJDBC元数据
.
Примечание. Если вы являетесь проектом с несколькими источниками данных, он будет использоваться по умолчанию.
primary
Экземпляр источника данных.