- 依赖
<!-- A.C.Table 自动创建表 -->
<dependency>
<groupId>com.gitee.sunchenbin.mybatis.actable</groupId>
<artifactId>mybatis-enhance-actable</artifactId>
<version>1.4.9.RELEASE</version>
</dependency>
这里有的官方文档用的1.5.0版本,但是我的ComponentScan注解会读不到官方包,所以这里用的1.4.9。
- 启动类增加扫描注解
@MapperScan("com.gitee.sunchenbin.mybatis.actable.dao.*;com.h3c.coordination.dao;com.h3c.core.dao")
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*","com.h3c.coordination"})
- 注意这里官方文档只扫描了actable的类库,实际使用需要加上自己项目下的包,@Mapperscan需要加上项目下的dao层(即mapper)包名,ComponentScan直接加上项目最大的包名。
- 配置文件增加相关配置
#ACTable
#表更新模式
mybatis.table.auto=update
#需要自动建表的实体所在包包名
mybatis.model.pack=com.h3c.coordination.bean.entity.dcp
mybatis.database.type=mysql
mybatis-plus.mapper-locations=classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
#如果用的是mybatis配这个:mybatis.mapper-locations= classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
关于mybatis.table.auto: #create 系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。 #update 系统会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。 #none 系统不做任何处理。 #add 新增表/新增字段/新增索引/新增唯一约束的功能,不做修改和删除 (只在版本1.0.9.RELEASE及以上支持)。
- 实体类增加注解
实测ACTable能试别到Mybatis-Plus的相关注解,所以如果原项目已经整合的Mybatis-Plus,是不需要在实体类上额外加注解就能自动建表的(如@TableName、@TableId、@TableField这些注解)。
有些项目启动会报初始化startUpHandlerImpl这个类失败的问题,可以检查下是不是配置文件中mybatis.model.pack这个值没配,还不行的话引入下面这个依赖试试:
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency>