SpringBoot项目整合ACTable实现实体类快速生产数据库表

1.安装

ACTable依赖

<dependency>
    <groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
    <artifactId>mybatis-enhance-actable</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>

使用mybatis-plus配合使用为了避免jar包版本冲突问题可以参照以下方式引入依赖

<dependency>
    <groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
    <artifactId>mybatis-enhance-actable</artifactId>
    <version>1.5.0.RELEASE</version>
    <exclusions>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
        </exclusion>
    </exclusions>
</dependency>

异常表现为:项目启动过程中报OrderBy注解ClassNotFindException异常

2.SpringBoot配置方式

1.项目的application.properties配置文件(二选一)

1.配置actable的建表模式,建表依托的model所属的包路径,以及数据库的类型,根据自己的情况配置。

2.配置actable所使用的xml配置到mybatis的mapperlocations中,这一项的值是固定的:classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/l

代码示例如下:

# actable的配置信息
actable.table.auto=update
actable.model.pack=com.yours.model
actable.database.type=mysql
actable.index.prefix=自己定义的索引前缀#该配置项不设置默认使用actable_idx_
actable.unique.prefix=自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_
# mybatis自有的配置信息,key也可能是:mybatis.mapperLocations
mybatis.mapper-locations=classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml

PS:如果使用了mybatis-plus,需要把classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml配置到这里:mybatis-plus.mapper-locations

2.项目的application.yml配置文件(二选一)

# actable的配置信息
actable:table:#    none   系统不做任何处理。#    create 系统启动后,会先将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。#    update 系统启动后,会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。#    add    系统启动后,只做新增,比如新增表/新增字段/新增索引/新增唯一约束的功能,而不会去做修改和删除的操作 (只在版本1.0.9.RELEASE及以上支持)。auto: nonemodel:pack: 扫描的包路径database:type: mysql  //支持的数据库,目前只支持mysqlindex:prefix: xxx_idx #自己定义的索引前缀#该配置项不设置默认使用actable_idx_unique:prefix: xxx_uni #自己定义的唯一约束前缀#该配置项不设置默认使用actable_uni_

配置解析:

springboot2.0+启动类需要做如下配置(必备)

1.@ComponentScan配置,路径"com.gitee.sunchenbin.mybatis.actable.manager.*"

2.@MapperScan配置,路径"com.gitee.sunchenbin.mybatis.actable.dao.*"

代码示例如下:

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
@EnableFeignClients
@MapperScan("com.gitee.sunchenbin.mybatis.actable.dao.*")
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})
public class OrderApiApplication {   
    public static void main(String[] args) {      
        SpringApplication.run(OrderApiApplication.class, args);   
    }
}

springboot3.0+启动类需要做如下配置(必备),自动执行建表失效需要springboot初始化之后,代码主动触发执行。

1.@ComponentScan配置,路径"com.gitee.sunchenbin.mybatis.actable.manager.*"

2.@MapperScan配置,路径"com.gitee.sunchenbin.mybatis.actable.dao.*"

代码示例如下:

@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
@EnableFeignClients
@MapperScan("com.gitee.sunchenbin.mybatis.actable.dao.*")
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})
public class OrderApiApplication {   
    public static void main(String[] args) {      
        ConfigurableApplicationContext run = SpringApplication.run(OrderApiApplication.class, args);
        // 容器中获取actable的核心处理类
        StartUpHandler bean =run.getBean(StartUpHandler.class, args);
        // 手动执行actable的建表方法
        bean.startHandler();
    }
}

3.常用注解

1.@Table

描述:表名注解

属性

类型

是否必填

默认值

描述

name

String

""

不填默认根据驼峰转换法转换表名,例如ProductLabel,自动转为product_label

value

comment

String

""

表注释,也可以使用@TableComment注解代替

charset

MySqlCharsetConstant

MySqlCharsetConstant.DEFAULT

表字符集,也可以使用@TableCharset注解代替,默认值代表不填,以数据库自有的默认值为准

engine

MySqlEngineConstant

MySqlEngineConstant.DEFAULT

表存储引擎,也可以使用@TableEngine注解代替,默认值代表不填,以数据库自有默认值为准

isSimple

boolean

false

是否开启simple模式配置,默认不开启,开启后Field不写注解@Column也可以采用默认的驼峰转换法创建字段

excludeFields

String[]

"serialVersionUID"

需要排除的属性名,排除掉的属性不参与建表

2.@IgnoreTable

描述:忽略当前实体建表逻辑,设置在实体类上,如果设置了那么该实体不参与建表更新表

3.@TableComment

描述:表注释注解

属性

类型

是否必填

默认值

描述

value

String

表注释,同@Table.comment()属性

3.@Column

描述:字段注解

属性

类型

是否必填

默认值

描述

value

String

""

字段名

name

type

MySqlTypeConstant

MySqlTypeConstant.DEFAULT

字段类型,也可以使用@ColumnType替代,默认值标识不填,使用ACTable自动类型转换规则

length

int

255

字段的默认长度,默认255时,会去读取该类型实际的默认长度

decimalLength

int

0

小数点保留位数,默认为0时,会去读取该类型实际的小说点默认长度

isNull

boolean

true

是否为可以为null,true是可以,false是不可以,默认为true,也可以使用@IsNotNull来替代

isKey

boolean

false

是否是主键,默认false,也可以使用@IsKey来代替

isAutoIncrement

boolean

false

是否自动递增,默认false,也可以使用@IsAutoIncrement来替代

defaultValue

String

ColumnUtils.DEFAULTVALUE

默认值,默认为DEFAULT,表示不填,默认为null,可用@DefaultValue替代

只有String和Boolean采用字符串传参的方式使用的是'#{}',其他类型均使用原生方式拼接sql使用的是'${}'

时间戳字段类型必须用:MySqlTypeConstant.TIMESTAMP

创建时间时间戳可以用

defaultValue="CURRENT_TIMESTAMP"

更新时间时间戳可以用

defaultValue="NULL ON UPDATE CURRENT_TIMESTAMP"

comment

String

""

数据表字段备注,也可用@ColumnComment替代

4.@IgnoreUpdate

描述:标注当前字段参与创建不参与更新,解决使用@DefaultValue("NULL ON UPDATE CURRENT_TIMESTAMP")时当前字段每次重启项目都会进行更新操作的问题

属性

类型

是否必填

默认值

描述

value

String

是否忽略对当前字段的更新操作

MySqlTypeConstant

字段类型可选枚举值列表

描述

DEFAULT

默认值标识不填,使用ACTable自动类型转换规则

INT

int类型,默认长度11,没有小数点长度

VARCHAR

varchar类型,默认长度255,没有小数点长度

DECIMAL

decimal类型,默认长度10,小数点默认长度2

TEXT

text类型,不需要设置长度

........

太多不一一列举,自行查看代码,枚举中lengthCount表示需要几个长度(0:不需要设置长度,1:需要设置一个长度,2:需要设置小数点长度),lengthDefault表示默认长度,decimalLengthDefault表示小数点默认长度

ACTable自动类型转换规则

Java数据类型

对应Mysql数据类型

java.lang.String

MySqlTypeConstant.VARCHAR

java.lang.Long

MySqlTypeConstant.BIGINT

java.lang.Integer

MySqlTypeConstant.INT

java.lang.Boolean

MySqlTypeConstant.BIT

java.math.BigInteger

MySqlTypeConstant.BIGINT

java.lang.Float

MySqlTypeConstant.FLOAT

java.lang.Double

MySqlTypeConstant.DOUBLE

java.lang.Short

MySqlTypeConstant.SMALLINT

java.math.BigDecimal

MySqlTypeConstant.DECIMAL

java.sql.Date

MySqlTypeConstant.DATE

java.util.Date

MySqlTypeConstant.DATE

java.sql.Timestamp

MySqlTypeConstant.DATETIME

java.sql.Time

MySqlTypeConstant.TIME

long

MySqlTypeConstant.BIGINT

int

MySqlTypeConstant.INT

boolean

MySqlTypeConstant.BIT

float

MySqlTypeConstant.FLOAT

double

MySqlTypeConstant.DOUBLE

short

MySqlTypeConstant.SMALLINT

char

MySqlTypeConstant.VARCHAR

5.@ColumnComment

描述:字段备注注解

属性

类型

是否必填

默认值

描述

value

String

字段备注,同@Column.comment()属性

6.@DefaultValue

描述:字段默认值注解

属性

类型

是否必填

默认值

描述

value

String

字段默认值,同@Column.defaultValue()属性

创建时间时间戳可以用

@ColumnType(MySqlTypeConstant.TIMESTAMP)

@DefaultValue("CURRENT_TIMESTAMP")

更新时间时间戳可以用

@ColumnType(MySqlTypeConstant.TIMESTAMP)
@IgnoreUpdate @DefaultValue("NULL ON UPDATE CURRENT_TIMESTAMP")

7.@IsAutoIncrement

描述:字段自增的注解,同@Column.isAutoIncrement

8.@IsKey

描述:字段是主键的注解,同@Column.isKey

9.@IsNotNull

描述:字段不为空的注解,同@Column.isNull()=false

10.@ColumnType

描述:字段类型注解

属性

类型

是否必填

默认值

描述

value

MySqlTypeConstant

MySqlTypeConstant.DEFAULT

字段类型,也可以使用@Column.type替代,默认值标识不填,使用ACTable自动类型转换规则

length

int

255

字段的默认长度,默认255时,会去读取该类型实际的默认长度

decimalLength

int

0

小数点保留位数,默认为0时,会去读取该类型实际的小说点默认长度

11.@Index

描述:字段设置为索引的注解

属性

类型

是否必填

默认值

描述

value

String

""

索引的名字,不设置默认为{actable_idx_当前标记字段名@Column的name},如果设置了名字例如union_name,系统会默认在名字前加actable_idx_前缀,也就是actable_idx_union_name

columns

String[]

{}

要建立索引的字段名,不设置默认为当前标记字段名@Column的name,可设置多个建立联合索引{"login_mobile","login_name"}

12.@Unique

描述:字段设置唯一约束的注解

属性

类型

是否必填

默认值

描述

value

String

""

唯一约束的名字,不设置默认为{actable_uni_当前标记字段名@Column的name},如果设置了名字例如union_name,系统会默认在名字前加actable_uni_前缀,也就是actable_uni_union_name

columns

String[]

{}

唯一约束的字段名,不设置默认为当前标记字段名@Column的name,可设置多个建立联合唯一{"login_mobile","login_name"}

4.兼容框架配置

mybatis-plus配置方式

对于springboot架构的项目,如需使用mybatis-plus只要多依赖一下如下配置即可:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>

将mybatis.mapper-locations配置的内容换到mybatis-plus.mapper-locations配置中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620527.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从旺店通·旗舰奇门到金蝶云星空通过接口配置打通数据

从旺店通旗舰奇门到金蝶云星空通过接口配置打通数据 对接系统旺店通旗舰奇门 慧策&#xff08;原旺店通&#xff09;是一家技术驱动型智能零售服务商&#xff0c;基于云计算PaaS、SaaS模式&#xff0c;以一体化智能零售解决方案&#xff0c;帮助零售企业数字化智能化升级&#…

Java-通过Maven导入本地jar包的常用方式

1.首先创建一个用于创建jar包的项目&#xff0c;进行测试 2.测试成功后进行项目打包 3.创建一个要导入本地jar包的项目&#xff0c;在项目下创建lib目录&#xff0c;并将刚才打包好的jar包复制进去 4.在pom.xml文件中引入 5.运行测试

JMM(Java Memory Model java内存模型

目标&#xff1a; 搞清楚高并发场景下&#xff0c;java内存模型是怎么支持的&#xff0c;对象在内存中是怎么布局的&#xff1f; 目录 目标&#xff1a; 搞清楚高并发场景下&#xff0c;java内存模型是怎么支持的&#xff0c;对象在内存中是怎么布局的&#xff1f; 1.硬件层…

【保姆级】2024年OnlyFans订阅指南

OnlyFans是一个独特的社交媒体平台&#xff0c;它为创作者和粉丝提供了一个互动交流的空间。通过这个平台&#xff0c;创作者可以分享他们的独家内容&#xff0c;而粉丝则可以通过订阅来支持和享受这些内容。如果你对OnlyFans感兴趣&#xff0c;并希望成为其中的一员&#xff0…

如何将PHP的Webman框架打包成二进制文件运行

看了看webman的官方文档&#xff0c;发现居然还能打包为二进制&#xff0c;这样太厉害了吧&#xff01; 先执行这个 composer require webman/console ^1.2.24 安装这个console的包&#xff0c;然后 执行 php webman build:bin 8.1 结果谁想到它报错提示&#xff1a; 好…

Spring Boot 整合 Mockito:提升Java单元测试的高效实践

引言 在Java开发领域&#xff0c;Spring Boot因其便捷的配置和强大的功能而受到广泛欢迎&#xff0c;而Mockito作为一款成熟的单元测试模拟框架&#xff0c;则在提高测试质量、确保代码模块间解耦方面扮演着至关重要的角色。本文将详细介绍如何在Spring Boot项目中整合Mockito&…

明日周刊-第6期

最近一周杭州的天气起起伏伏&#xff0c;下雨就凉&#xff0c;不下雨就热。但是夏天的感觉确实是越来越浓烈了&#xff0c;又是一年夏&#xff0c;在这个夏天大家都有什么新的计划呢。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、我国自主研发科技壮举震惊全球航天界…

电商平台api接口价格接入|定价参考怎么找数据?

目前&#xff0c;不少品牌方都有参考市场中同类商品价格&#xff0c;以辅助自身产品定价的需求。实际上&#xff0c;参考同类产品的定价是一个重要的步骤&#xff0c;能为品牌方带来诸多益处。 首先&#xff0c;通过对同类产品的功能、质量和服务等要素做对比分析&#xff0c;…

(三)C++自制植物大战僵尸游戏项目结构说明

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/ErelL 一、项目结构 打开项目后&#xff0c;在解决方案管理器中有五个项目&#xff0c;分别是libbox2d、libcocos2d、librecast、libSpine、PlantsVsZombies五个项目&#xff0c;除PlantsVsZombies外&#xff0c;其他四个…

数据结构--选择排序

1、选择排序 1.1 基本认识 1.1.1 基本概念 选择排序是一种简单直观的排序算法&#xff0c;无论什么数据进去都是 O(n) 的时间复杂度。 1.1.2 算法步骤 &#xff08;1&#xff09;首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起…

linnux文件服务

1.FTP:文件传输协议。 基础:控制端口(身份验证) command 21/tcp 数据端口: data 20/tcp FTP Server默认配置:yum -y install vsftpd (安装vsftpd&#xff09; touch /var/ftp/abc.txt(创建文件) systemctl start vsftpd(启动文件&#xff09; systemctl …

C# 关于进程回收管理的一款工具设计与分享

目录 设计初衷 开发运行环境 Craneoffice ProcessGC 运行主界面 管理任务与策略 其它设置 移动存储设备管理 核心代码-计时器监控 小结 设计初衷 在使用 COM 模式操作 OFFICE 组件的开发过程中&#xff0c;当操作完相关文档后&#xff0c;在某些情况下仍然无法释放掉…