springboot+mybatis-plus实现自动建表

news2024/10/7 14:32:29

好长时间没输出了,最近工作上也是太多事,领导动不动就拍脑门,那叫一个酸爽~
工作能力的提现不但是技术或解决问题的能力上,还体现在要能立刻满足领导的各种需求,不管是哪方面的需求,这样才能够拍上马屁,步步高升。
言归正传,作为技术从业者,还是要多深耕技术。有小伙伴问,在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、测试结果

启动服务,结果类似如下
在这里插入图片描述
在这里插入图片描述
访问结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDDR和ODDR

IDDR D&#xff1a;输入双倍速率数据&#xff08;IOB输入&#xff0c;且数据在时钟的上升沿和下降沿都会发生切换&#xff0c;即一个时钟周期发送2bit数据&#xff09; CE&#xff1a;时钟使能信号&#xff08;高有效&#xff09; C&#xff1a;时钟信号 S&#xff0c;R&#x…

STM32F4_串口 IAP

目录 前言 1. IAP简介 2. APP程序起始地址设置方法 3. 中断向量表的偏移量设置 4. 如何在MDK中生成 .BIN 文件 5. APP程序生成步骤 前言 IAP&#xff0c;即在应用编程。 1. IAP简介 IAP&#xff08;In Application Programming&#xff09;即 在应用编程&#xff0c;IAP…

Apache RocketMQ5.x-消息队列体验

Apache RocketMQ5.x-消息队列体验 Apache RocketMQ 是一款低延迟、高并发、高可用、高可靠的分布式消息中间件&#xff0c;由阿里开源&#xff0c;后由阿里捐赠给Apache基金会。 本次体验的目的是从技术角度验证一下在微服架构中&#xff0c;用Apache RocketMQ做为消息队列&am…

MQTT 订阅标识符详解

为什么需要订阅标识符 在大部分 MQTT 客户端的实现中&#xff0c;都会通过回调机制来实现对新到达消息的处理。 但是在回调函数中&#xff0c;我们只能知道消息的主题名是什么。如果是非通配符订阅&#xff0c;订阅时使用的主题过滤器将和消息中的主题名完全一致&#xff0c;…

chatglm微调

chatGML 看到 【【官方教程】ChatGLM-6B 微调&#xff1a;P-Tuning&#xff0c;LoRA&#xff0c;Full parameter】 【精准空降到 15:27】 https://www.bilibili.com/video/BV1fd4y1Z7Y5/?share_sourcecopy_web&vd_sourceaa8c13cff97f0454ee41e1f609a655f1&t927 记得看…

Java Mybatis02+oracle拓展

0目录 Mybatis 02Oracle 拓展 1.Mybatis 02 创建数据库和表 创建工程 实体类 util工具类 接口方法 Resource Mapper xml文件 配置文件 测试 加入模糊查询&#xff08;根据姓名&#xff09; 测试结果 2.ParameterType语法 实战 参数为对象 参数为…

Bean 作用域与生命周期

Bean 作用域与生命周期 ​ 对于 Spring 来说&#xff0c;核心操作对象就是存和取 Bean &#xff0c;接下来就 Bean 的作用域与生命周期进行探讨。 文章目录 Bean 作用域与生命周期一、作用域的定义1.1、Bean 的6种作用域1.2、Bean作用域设置方法 二、Bean 的生命周期2.1、Bean…

【Java】Java实现微信小程序发送服务通知

文章目录 前言一、文档来源二、JAR包引入三、后端工作四、编写配置文件配置一&#xff1a;WxConfig配置二&#xff1a;WxProperties 五、代码编写 前言 在上个月接到一个需求&#xff0c;大概是需要计算一条数据的最大办理时间从而发送任务超期的微信小程序服务通知&#xff0…

怎么进行流程图制作?分享几种绘制方法

怎么进行流程图制作&#xff1f;流程图是一种图形化表示流程的图表&#xff0c;通常用于描述业务、计划或工作流程。它可以帮助人们更好地理解复杂的流程&#xff0c;并且提供了一种清晰的方法来记录和共享流程信息。下面介绍一些绘制流程图的方法&#xff0c;可以帮助我们快速…

4 自动微分 Automatic Differentitaion

计算图 Computational Graph 图上的每个节点代表一个中间值边事输入输出的关系 forward 求导 forward mode AD 上图中从前向后&#xff0c;一步一步计算每个中间值对 x1的偏导&#xff0c;那么计算到 v7&#xff0c;就得到了整个函数对于 x1的偏导。 有limitation 对一个参数…

echarts开发遇到的问题

echarts开发遇到的问题 1.rich富文本标签作为横向柱状图的刻度标签&#xff0c;其中带有icon。rich里不能写参数&#xff0c;只能写死&#xff1f;圆角设置无效&#xff1f; 解决办法&#xff1a; 自己写横向柱状图 散点图性能优化配置的临界点&#xff0c;最低优化数值必须…

超全整理,软件测试高频面试题(功能/接口/自动化测试-附答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 功能测试 1、双十…

LCD—STM32液晶显示(4.液晶控制代码讲解)

目录 STM32液晶控制代码讲解 液晶接口封装介绍 使用LCD的配置步骤 内存操作要使用volatile进行修饰 图形绘制实现 绘制矩形 重点补充 STM32液晶控制代码讲解 液晶接口封装介绍 指南者液晶接口原理图 左边DB00—DB15表示液晶屏的数据线引脚&#xff0c;分别对应STM32的F…

使用ppocr突然退出问题

本次使用conda装了一个cuda10.2版本的paddleocr&#xff0c;然后所有的环境检查没问题&#xff0c;使用paddle自带的检查代码&#xff0c;输出提醒paddle可以正常使用&#xff1a; >>> import paddle >>> paddle.utils.run_check() 输出结果提示安装正常 …

零编程经验也能打造精美微信展示小程序的秘诀揭秘

随着微信的普及和发展&#xff0c;微信展示小程序成为了许多企业展示自己形象的重要渠道。那么如何快速地搭建一个精美的微信展示小程序呢&#xff1f;下面就为大家详细介绍一下具体操作步骤。 首先&#xff0c;进入【乔拓云】平台后台。乔拓云是一款非常优秀的小程序开发平台&…

php伪协议(文件包含)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 php伪协议 伪协议详情 php伪协议 文件包含直接读取的是文件&#xff0c;而不是文件源码&#xff0c;所以要想办法读取源码方法。 那么就要涉及到 PHP 伪协议 ph…

LabVIEW开发航空电子设备嵌入式诊断半物理仿真系统

LabVIEW开发航空电子设备嵌入式诊断半物理仿真系统 航电集成系统是现代战争飞机的重要组成部分&#xff0c;包括惯性导航系统、飞行控制系统、机电管理系统和任务计算机等子系统。战机的作战性能与航电系统息息相关&#xff0c;可以说&#xff0c;没有高性能的空电系统&#x…

行业首家!法大大荣获“数据安全管理能力认证(DSMC)”证书

7月11日&#xff0c;法大大获得由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;颁发的“数据安全管理能力认证&#xff08;DSMC&#xff09;证书”&#xff08;以下简称“DSMC证书”&#xff09;&#xff0c;成为行业内首家获颁该证书的企业&#xff0c;法…

基于Java+SpringBoot+Vue前后端分离校园管理系统详细设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring Cloud Alibaba【创建支付服务生产者、创建服务消费者 、Dubbo和OpenFeign区别 、微服务接入OpenFeign】(二)

目录 分布式服务治理_创建支付服务生产者 分布式服务治理_创建服务消费者 服务调用_Dubbo和OpenFeign区别 服务调用_微服务接入OpenFeign 分布式服务治理_创建支付服务生产者 创建服务提供者工程cloud-provider-payment8001 POM文件引入依赖 <dependencies><…