Springboot+MybatisPlus+Oracle实现主键自增

上周周一,本来刚过完周末,高高兴兴,老大突然安排了个活,要在一天内把项目的MySQL数据库换成Oracle数据库,我们都知道这是不可能完成的任务,但是,秉承着“没有困难的工作,只有不努力的打工人”的精神,我们马上投入了工作,第一步当然是先配置数据库、oracle建表,这个解决调试了一上午,然后下午卡到oracle主键了,所有人网上找方法,一直到第二天凌晨3点半都还没解决,网上方法很多,试了好多都不管用,终于第二天才找到了满足的方法。

废话不多说,下面贴出。

application.yml配置

# Mybatis的相关配置
mybatis-plus:
  mapper-locations: classpath*:com/XX/XX/XX/dao/mapping/*.xml
  typeAliasesPackage: com.XX.XX.XX.model
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 1
    #序列接口实现类配置
    key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator

model实体类配置(仅展示id)

import java.io.Serializable;
import javax.persistence.*;
import lombok.Data;


@Data
@Table(name = "POJO")
public class SysLogeInfo implements Serializable {
    @Id
    @Column(name = "ID")
    @SequenceGenerator(name = "sequenceGenerator",sequenceName = "POJO_SEQ")
    @GeneratedValue(generator = "sequenceGenerator",strategy = GenerationType.SEQUENCE)
    private Integer id;
}

其中:

@SequenceGenerator的name与@GeneratedValue的generator相对应

sequenceName即你在oracle数据库中为此表创建的自增序列名(貌似框架无法自动生成,需要自己手动创建)

这样,主键ID插入null值的问题基本解决了,但是我们的Mapper继承了tk.mybatis.mapper.common.Mapper,插入是直接调tk.Mapper的insertSelective(T var1)方法,有时候我们需要插入后的主键id,这种方法没办法得到,所以只能手写insert方法,如下。

<insert id="add" keyColumn="ID" keyProperty="id"  parameterType="com.XX.XX.XX.model.POJO" useGeneratedKeys="true">
        <selectKey resultType="int" order="BEFORE" keyProperty="id">
            SELECT POJO_SEQ.nextval id FROM DUAL
        </selectKey>
        INSERT INTO POJO
        ( ID,COL1,COL2,COL3,COL4,COL5,COL6)
        VALUES
        (#{id,jdbcType=INTEGER},
        #{col1,jdbcType=INTEGER},
        #{col2,jdbcType=VARCHAR},
        #{col3,jdbcType=INTEGER},
        #{col4,jdbcType=INTEGER},
        #{col5,jdbcType=DATE},
        #{col6,jdbcType=INTEGER})
</insert>

注:<selectKey>标签中加入order='BEFORE'即可在插入完成后返回主键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,用于构建独立的、可扩展的、基于微服务的应用程序。它提供了一种快速、简单的方式来构建和部署应用程序,也简化了与各种数据库、消息队列和其他外部系统进行集成的过程。同时,Spring Boot提供了一套强大的开发工具和功能,方便开发人员进行开发、测试和部署。 Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,它被广泛应用于构建实时搜索、数据分析和数据存储的解决方案。Elasticsearch具有高性能、可扩展、可靠和易于使用的特点,可以处理大规模的数据,并提供全文搜索、聚合分析和实时监控等功能。 Oracle是一种关系型数据库管理系统(RDBMS),它是全球领先的企业级数据库解决方案之一。Oracle提供了高度可靠和安全的数据管理功能,同时支持事务处理、并发性控制、数据恢复和备份等重要特性。它还提供了丰富的管理和开发工具,方便开发人员进行数据库的设计、开发和管理。 在使用Spring Boot开发应用程序时,可以通过集成Elasticsearch和Oracle来满足不同的需求。使用Elasticsearch,可以轻松地实现全文搜索、聚合分析和实时监控等功能。而Oracle数据库可以用于存储结构化数据,并提供事务处理、数据完整性和安全性等特性。通过使用这两个技术,可以构建出高效、可靠和安全的应用程序,满足不同场景下的各种需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值