我的问题是手动打错了配置文件,导致找错很久…
本篇以Mybatis为主

官方

官方地址:https://gitee.com/sunchenbin/mybatis-enhance
文档地址:https://www.yuque.com/sunchenbin/actable/ag3y1y

1.引入maven

<!-- A.C.Table 自动创建表 -->
<dependency>
    <groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
    <artifactId>mybatis-enhance-actable</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>

使用mybatis-plus配合使用为了避免jar包版本冲突问题可以参照以下方式引入依赖
异常表现为:项目启动过程中报OrderBy注解ClassNotFindException异常

<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>

2.配置

1.有些配置是要引入插件的
2.有些配置是使用自己的
复制的时候注意一下yaml文件必要的格式

官方配置:

mybatis:
	#如果使用了mybatis-plus,需要把classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml配置到这里:mybatis-plus.mapper-locations
	mapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
	table:
    	auto: update
    	#create    系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。
    	#update    系统会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。
    	#none      系统不做任何处理。
    	#add       新增表/新增字段/新增索引/新增唯一约束的功能,不做修改和删除 (只在版本1.0.9.RELEASE及以上支持)。
  	model:
    	pack: com.chen.pagehelper.entity  #扫描用于创建表的对象的包名,多个包用“,”隔开
  	database:
    	type: mysql #数据库类型 目前只支持mysql

启动类加上官方的(必备)

@MapperScan({"com.gitee.sunchenbin.mybatis.actable.dao.*"})
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})

我的示例:
mapper-locations: 在,逗号前引入官方插件的配置,后面的是自己的

mybatis:
  #在,逗号前引入插件的配置,后面的是自己的
  mapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml,classpath*:com/chen/pagehelper/mapper/*.xml
  type-aliases-package: com/chen/pagehelper/entity
  table:
    auto: update
    #create    系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。
    #update    系统会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。
    #none      系统不做任何处理。
    #add       新增表/新增字段/新增索引/新增唯一约束的功能,不做修改和删除 (只在版本1.0.9.RELEASE及以上支持)。
  model:
    pack: com.chen.pagehelper.entity  #扫描自己用于创建表的对象的包名,多个包用“,”隔开
  database:
    type: mysql #数据库类型 目前只支持mysql

我的启动类
在,逗号前面引入的是官方的,后面是自己的,可以的

@MapperScan({"com.gitee.sunchenbin.mybatis.actable.dao.*","com.person.provider.mapper","com.chen.pagehelper.mapper"})
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*","com.chen"}) 
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

我的连接配置:
连接配置基本没什么要求,还是常规的。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: root

3.实体类映射字段

3.1 底层默认是自动java类型转换字段类型

Java数据类型对应Mysql数据类型
java.lang.StringMySqlTypeConstant.VARCHAR
java.lang.LongMySqlTypeConstant.BIGINT
java.lang.IntegerMySqlTypeConstant.INT
java.lang.BooleanMySqlTypeConstant.BIT
java.math.BigIntegerMySqlTypeConstant.BIGINT
java.lang.FloatMySqlTypeConstant.FLOAT
java.lang.DoubleMySqlTypeConstant.DOUBLE
java.lang.ShortMySqlTypeConstant.SMALLINT
java.math.BigDecimalMySqlTypeConstant.DECIMAL
java.sql.DateMySqlTypeConstant.DATE
java.util.DateMySqlTypeConstant.DATE
java.sql.TimestampMySqlTypeConstant.DATETIME
java.sql.TimeMySqlTypeConstant.TIME
longMySqlTypeConstant.BIGINT
intMySqlTypeConstant.INT
booleanMySqlTypeConstant.BIT
floatMySqlTypeConstant.FLOAT
doubleMySqlTypeConstant.DOUBLE
shortMySqlTypeConstant.SMALLINT
charMySqlTypeConstant.VARCHAR

3.2 默认自动识别并修改字段名
如:levelId -> level_id

3.3 更多的注解参数官方有的,自己查一下吧
https://www.yuque.com/sunchenbin/actable/ca4vsf

@Data
@Table(value = "u_user", comment = "所有用户")
@TableCharset(MySqlCharsetConstant.UTF8)
@TableEngine(MySqlEngineConstant.InnoDB)
public class UserLogin {

    /**
     * 唯一id
     */
    @IsKey  //是否主键
    @IsAutoIncrement    //是否自增
    private Long id;

    /**
     * 用户等级id   0:普通用户 1:社区管理 2:街道管理 3:市区管理 4:市级管理 5.省份管理
     */
    @Column(name = "level_id", comment = "用户等级", length = 1,isNull = false)
    private Long levelId;

    /**
     * 用户名
     */
    @Column(name = "user_name", comment = "用户名", length = 50,isNull = false)
    private String username;

    /**
     * 密码
     */
    @Column(name = "password", comment = "密码", length = 255,isNull = false)
    private String password;

    /**
     * 昵称
     */
    @Column(name = "nickname", comment = "昵称", length = 50)
    private String nickname;

    /**
     * 手机号码
     */
    @Column(name = "mobile", comment = "手机号码", length = 20,isNull = false)
    private String mobile;

    /**
     * 邮箱
     */
    @Column(name = "email", comment = "邮箱", length = 50)
    private String email;

    /**
     * 头像
     */
    @Column(name = "header", comment = "头像", length = 255)
    private String header;

    /**
     * 性别
     */
    @Column(name = "gender", comment = "性别", length = 2)
    private Integer gender;

    /**
     * 生日
     */
    @Column(name = "birth", comment = "生日",  type = MySqlTypeConstant.TIMESTAMP,length = 50)
    private Date birth;

    /**
     * 所在城市
     */
    @Column(name = "city", comment = "所在城市", length = 50)
    private String city;
}

4.启动

运行启动类

5.成功

在运行栏看到下面这两行就表示成功了!
1.开始创建表 Table
2.完成创建表 Table

2022-04-06 00:19:13.091  INFO 13620 --- [  restartedMain] c.g.s.m.a.m.handler.StartUpHandlerImpl   : databaseType=mysql,开始执行mysql的处理方法
2022-04-06 00:19:13.112  INFO 13620 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-04-06 00:19:13.234  INFO 13620 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-04-06 00:19:13.324  INFO 13620 --- [  restartedMain] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 开始创建表:u_user
2022-04-06 00:19:13.385  INFO 13620 --- [  restartedMain] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 完成创建表:u_user

数据库:
在这里插入图片描述
在这里插入图片描述

6.可能出现的问题

6.1 jar包冲突
在运行栏可能出现这样的提示,我的解决办法是吧Mybatis-plus的依赖删除了,当然我只是在实验,如果真的是应用的话,你可以试一试最上面的解决maven冲突

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

6.2 配置文件Key没对
配置mybatis.table.auto错误无法识别,我的情况是配置文件key没对,和后半句说的没关系,因为官方就是支持这四种策略,怎么会不支持呢?
官方的:mybatis.table.auto
我的:mybatis.tabie.auto
修改之后就成功运行了!

2022-04-06 01:34:31.160  INFO 13036 --- [  restartedMain] c.g.s.m.a.m.handler.StartUpHandlerImpl   : databaseType=mysql,开始执行mysql的处理方法
2022-04-06 01:34:31.181  INFO 13036 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-04-06 01:34:31.316  INFO 13036 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-04-06 01:34:31.324  WARN 13036 --- [  restartedMain] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 配置mybatis.table.auto错误无法识别,当前配置只支持[none/update/create/add]三种类型!

祝大家使用愉快!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐