好长时间没输出了,最近工作上也是太多事,领导动不动就拍脑门,那叫一个酸爽~
工作能力的提现不但是技术或解决问题的能力上,还体现在要能立刻满足领导的各种需求,不管是哪方面的需求,这样才能够拍上马屁,步步高升。
言归正传,作为技术从业者,还是要多深耕技术。有小伙伴问,在springboot工程中,持久层采用的mybatis框架,如何能够自动建表,一个团队中各个小伙伴针对新增需求会添加或修改表,但各自调试时,数据库表更新又不及时,造成很大不便。下面记录一下springboot+mybatis-plus实现自动建表。
1、环境
- springboot2.x
- mybatis-plus3.5.0
- mybatis-enhance-actable1.1.1.release
- mysql5.7.x
- idea开发工具
2、新建springboot工程
2.1、pom依赖如下
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>com.baomidou</groupid> <artifactid>mybatis-plus-boot-starter</artifactid> <version>3.5.0</version> </dependency> <dependency> <groupid>com.gitee.sunchenbin.mybatis.actable</groupid> <artifactid>mybatis-enhance-actable</artifactid> <version>1.1.1.release</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> </dependency> <dependency> <groupid>org.projectlombok</groupid> <artifactid>lombok</artifactid> <optional>true</optional> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies>
2.2、application配置
server: port: 9001 spring: #数据库配置 datasource: url: jdbc:mysql://localhost:3306/test?servertimezone=utc&useunicode=true&characterencoding=utf-8&usessl=false driver-class-name: com.mysql.cj.jdbc.driver username: root password: root #自动建表设置 mybatis: table: #create系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据; #update系统会自动判断哪些表是新建的.哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据; #add新增表/新增字段/新增索引新增唯一约束的功能,不做做修改和删除(只在版本1.0.9.release及以上支持); #none系统不做任何处理; auto: update model: #扫描用于创建表的对象的包名 pack: com.*.*.model database: #数据库类型目前只支持mysql type: mysql #mybatis-plus mybatis-plus: #固定的 mapper-locations: classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
注意,mybatis-plus是固定的,采用的是mybatis-enhance-actable插件。
3、集成mybatis-plus
启动类配置如下
@springbootapplication @mapperscan("com.*.*.mapper") @componentscan("com.*.*.*") @mapperscan({"com.gitee.sunchenbin.mybatis.actable.dao.*"})//固定的 @componentscan("com.gitee.sunchenbin.mybatis.actable.manager.*")//固定的 public class springbootmybatisplus2application { public static void main(string[] args) { springapplication.run(springbootmybatisplus2application.class, args); } }
注意,固定的是采用的是mybatis-enhance-actable插件。
实体类配置如下
@data @table(name = "t_test") @tablename(value = "t_test") public class test { @tableid(value = "id",type = idtype.auto) @iskey @isautoincrement @column(name = "id",comment = "主键") private long id; @tablefield(value = "name") @column(name = "",comment = "名称",isnull = false) private string name; @tablefield(value = "create_time") @column(name = "create_time",comment = "创建时间") private string creattime; @column(name = "update_time",comment = "修改时间") private string updatetime; }
注解分别为mybatisplus提供的、mybatis-enhance-actable提供的,前者的注解是用来进行持久层操作的(增删改查),后者的注解是用来进行自动建表的。
4、业务操作
mapper类如下
@mapper public interface testmapper extends basemapper<test> { }
service类如下
public interface testservice extends iservice<test> {}
@service public class testserviceimpl extends serviceimpl<testmapper, test> implements testservice { }
controller类如下
@restcontroller @requiredargsconstructor public class testcontroller { private final testserviceimpl testservice; @getmapping("/hello") public object hello() { return "hello"; } @getmapping("/save") public object save() { test test = new test(); test.setname("caocao"); testservice.save(test); return test; } @getmapping("/list") public object list() { list<test> list = testservice.list(); return list; } }
5、测试结果
启动服务,结果类似如下
访问结果如下
到此这篇关于springboot+mybatis-plus实现自动建表的示例的文章就介绍到这了,更多相关springboot mybatisplus自动建表内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论