Mybatis自动创建表和更新表结构

最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯了,理所当然的认为,在实体类上配置下注解或者写写映射文件,系统启动后就可以自动创建表。

我只能很遗憾的告诉他,mybatis并没有这个功能,看他兴致阑珊的样子,我只能安慰他,就算没有这功能,我们可以自己开发啊~~

所以就有了下面这套系统,已开源大家可以下来看看~~

Mybatis_BuildTable_V0.2

https://git.oschina.net/sunchenbin/Mybatis_BuildTable_V0.2.git

该项目架构使用的是SpringMvc+Mybatis+Maven,功能特点是通过配置model注解的方式来创建表,修改表结构,目前仅支持Mysql,因为重点是突出mybatis自动创表的功能,所以在框架上没有话太多心思。

使用规范:

核心代码都在model-store-repo中

1.SysMysqlColumns.java这个对象里面配置的是mysql的数据类型,这里配置的类型越多,意味着创建表时能使用的类型越多

2.LengthCount.java是一个自定义的注解,用于标记在SysMysqlColumns.java里面配置的数据类型上的,标记该类型需要设置几个长度,如datetime/varchar(1)/decimal(5,2),分别是需要设置0个1个2个

3.Column.java也是一个自定义的注解,用于标记model中的字段上,作为创建表的依据如不标记,不会被扫描到,有几个属性用来设置字段名、字段类型、长度等属性的设置,详细请看代码上的注释

4.Table.java也是一个自定义的注解,用于标记在model对象上,有一个属性name,用于设置该model生成表后的表名,如不设置该注解,则该model不会被扫描到

ok,系统启动后会去自动调用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,没错,这就是核心方法了,负责创建、删除、修改表。

model-store-frontend/resources/config/autoCreateTable.properties

你会发现有这样一个配置文件,其中有两项配置

1.mybatis.table.auto=update

2.mybatis.model.pack=com.sunchenbin.store.model

本系统提供两种模式:

1.当mybatis.table.auto=create时,系统启动后,会将所有的表删除掉,然后根据model中配置的结构重新建表,该操作会破坏原有数据。

2.当mybatis.table.auto=update时,系统会自动判断哪些表是新建的,哪些字段要修改类型等,哪些字段要删除,哪些字段要新增,该操作不会破坏原有数据。

3.mybatis.model.pack这个配置是用来配置要扫描的用于创建表的对象的包名

系统配置的是使用maven来启动的,web依赖repo,frontend和mobile依赖web,所以要运行frontend和mobile,必须先instal一下web和repo

至于如何用maven启动项目….不再多说了。

以上所述是小编给大家介绍的Mybatis自动创建表和更新表结构的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    Oracle和MySQL数据库的批量update在mybatis中配置不太一样: oracle数据库: <code class="hljs tcl" style=""><<span class="hljs-keyword" style="">update</span> id=<span class="hljs-string" style=""

  • Mybatis批量更新报错问题

    下面给大家介绍mybatis批量更新报错问题, allowMultiQueries=true 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybatis批量更新操作如下 <update id="updateOrderOverdueStatus" parameterType="java.util.List"> <foreach collection="list" item=&quo

  • Mybatis 插入和删除批处理操作

    在操作数据库时,经常会碰到批量插入.批量删除的情况,直接执行SQL语句还好做一点,当使用Mybatis进行批量插入.批量删除时会有一些问题.下面对使用Mybatis批量插入,批量删除进行介绍. 1. 批量插入 Java代码: // Model: Test.java @Data public class Test { private String x; private String y; private String z; } // Mapper: TestMapper.java public v

  • Mybatis入门教程之新增、更新、删除功能

    上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作: 一. 插入一条数据 1.首先编写USER.XML(表的xml)使用insert元素,元素写在mapper中: <insert id="insertitem" parameterType="cn.qkp.po.user"> INSERT INTO user(username,birthday,sex,address) VALUES(#{username},

  • MyBatis批量添加、修改和删除

    废话不多说了,直接步入正题了. 1.批量添加元素session.insert(String string,Object o) public void batchInsertStudent(){ List<Student> ls = new ArrayList<Student>(); for(int i = 5;i < 8;i++){ Student student = new Student(); student.setId(i); student.setName("

  • Mybatis批量删除数据操作方法

    MyBatis的作用我想不用多说,今天说说MyBatis中的批量删除操作.废话不多说,先给大家一段代码片段! <delete id="deleteByStandardIds"> delete from t_standard_catalog where standard_id in <foreach collection="array" item="standardId" open="(" close=&quo

  • Mybatis自动创建表和更新表结构

    最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯了,理所当然的认为,在实体类上配置下注解或者写写映射文件,系统启动后就可以自动创建表. 我只能很遗憾的告诉他,mybatis并没有这个功能,看他兴致阑珊的样子,我只能安慰他,就算没有这功能,我们可以自己开发啊~~ 所以就有了下面这套系统,已开源大家可以下来看看~~ Mybatis_BuildTable_V0.2 https://git.oschina.net/sunchenbin/Mybatis

  • 详解hibernate自动创建表的配置

    详解hibernate自动创建表的配置 配置自动创建表: <prop key="hibernate.hbm2ddl.auto">update</prop>//首次创建项目时用,项目稳定后一般注释这里有4个值: update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后

  • 解决Springboot项目启动后自动创建多表关联的数据库与表的方案

    熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励! 在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表. 若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据库表,如mybatis plus.spring JPA等,但您是否有想过,若要自行构建一套更为复杂的表结构时,这种开源框架是否也能满足呢,若满足不了话,又该如何才能实现呢? 我在前面写过一篇 Activiti工作流学习笔记(

  • 解决Spring Data Jpa 实体类自动创建数据库表失败问题

    目录 Spring Data Jpa 实体类自动创建数据库表失败 找了半天发现是一个配置的问题 可能导致JPA 无法自动建表的问题汇总 1.没加@Entity或引错Entity所在包 2.jpa配置中ddl-auto未设置update 3.实体类的包不是启动程序所在包的子包 4.mysql配置问题 5.依赖不全 6.实体类间关系错误 7.启动类注解问题 8.其他问题 Spring Data Jpa 实体类自动创建数据库表失败 先说一下我遇到的这个问题,首先我是通过maven创建了一个spring

  • PostgreSQL更新表时时间戳不会自动更新的解决方法

    PostgreSQL更新表时时间戳不会自动更新的解决方法,具体如下 操作系统:CentOS7.3.1611_x64 PostgreSQL版本:9.6 问题描述 PostgreSQL执行Insert语句时,自动填入时间的功能可以在创建表时实现,但更新表时时间戳不会自动自动更新. 在mysql中可以在创建表时定义自动更新字段,比如 : create table ab ( id int, changetimestamp timestamp NOT NULL default CURRENT_TIMEST

  • Jpa 实现自动更新表中的创建日期和修改时间

    一般来说创建时间和修改时间 两个字段是一个实体类必备的. 在阿里Java开发手册中也对此的说明: [强制]表必备三字段:id, create_time, update_time. 说明:其中 id 必为主键,类型为 bigint unsigned.单表时自增.步长为 1.create_time, update_time 的类型均为 datetime 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新. mysql 实现添加时间自动添加更新时间自动更新 在JPA 中也是支持新的数据保存是自

  • SpringBoot整合flyway实现自动创建表的方法

    spring boot - v: 2.1.3.RELEASE MySQL - v:5.7 JDK -v : 11 项目结构: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan

  • SpringBoot+jpa配置如何根据实体类自动创建表

    目录 jpa配置根据实体类自动创建表 1.配置文件application.properties 2.pom.xml引入包 3.编写实体类 4.运行项目 5.针对项目启动以后数据库并未生成数据库表问题 jpa根据Entry自动生成表 1.加入依赖 2.配置 application.yml 3. 创建Entity jpa配置根据实体类自动创建表 1.配置文件application.properties spring.datasource.url=jdbc:mysql://localhost:3306

  • SpringBoot结合Mybatis实现创建数据库表的方法

    目录 前言 为什么要通过应用实现创建表的功能 准备创建表的 SQL 语句 实现通过 MyBatis 创建数据库表示例 在 Maven 中引入相关依赖 在 SpringBoot 配置文件中添加数据库配置 创建测试的 Mapper 接口类 创建与 Mapper 关联的 XML 文件 创建用于测试的 Controller 类 创建 SpringBoot 启动类 调用创建表的接口进行测试 前言 系统环境: JAVA JDK 版本:1.8 MySQL 版本:8.0.27 MyBatis 版本:3.5.9

  • springboot中关于自动建表,无法更新字段的问题

    目录 关于自动建表,无法更新字段问题 Springboot中的配置 除了create配置,还有以下几种 springbootjpa未自动建表问题记录 检查pom是否正确引入对应模块 检查application文件配置是否存在错误 关于自动建表,无法更新字段问题 Springboot中的配置 jpa:     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect     database: MYSQL     show-sql:

随机推荐