浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

 更新时间:2020年08月26日 10:51:28   作者:hjjay  
这篇文章主要介绍了浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、Oracle的主键Sequence设置简介

在Oracle数据库中不支持主键自增策略,它是通过Sequence序列来进行完成的,因此需要在MP中进行相关配置

二、相关配置如下

2.1、pom.xml 添加相关依赖

注意:由于oracle的授权问题,没办法从maven仓库中下载,因此可以手动从oracle官网中下载,并本地打包到仓库中

<!-- Oracle驱动: 因为Oracle授权的问题,不能从Maven的仓库中下载到Oracle驱动 -->
 <dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc14</artifactId>
  <version>10.2.0.4.0</version>
 </dependency>

2.2、db.properties 添加相关的连接配置信息

orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:mp
orcl.username=username
orcl.password=1234

2.3、applicationContext.xml 添加dataSource设置

<!-- Oracle -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 <property name="driverClass" value="${orcl.driver}"></property>
 <property name="jdbcUrl" value="${orcl.url}"></property>
 <property name="user" value="${orcl.username}"></property>
 <property name="password" value="${orcl.password}"></property>
 </bean>

2.4、在Oracle中创建表数据及序列

create table tbl_user(
 id number(10),
 name varchar2(32),
 delete_flag number(10)
)
-- 创建序列
create sequence seq_user start with 1;

2.5、实体相关配置

注意两点:

@KeySequence(value="seq_user",clazz=Integer.class) //value为数据库中生成的序列名,class指主键属性类型

 @TableId(type=IdType.INPUT)  //注意主键类型要指定为Input

@KeySequence(value="seq_user",clazz=String.class) //value为数据库中生成的序列名,class指主键属性类型
public class User {
 @TableId(type=IdType.INPUT) //注意主键类型要指定为Input
 private String id;
 @TableField(fill=FieldFill.INSERT_UPDATE) //当插入和更新都会进行字段的填充
 private String name;
 @TableLogic //标志是一个逻辑标识符号
 private Integer deleteFlag;
}

2.6、applicationContext.xml配置

 <!-- mybatis-plus全局配置策略 ,这样避免重复在每一个实体中使用注解进行配置-->
 <bean id="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
 <property name="dbColumnUnderline" value="true"></property> <!-- 2.3版本后默认配置数据库下划线-->
 <!-- 指定数据库ID生成策略 0:数据库自增-->
 <property name="idType" value="0"></property>
 <!-- 指定数据库表前缀 -->
 <property name="tablePrefix" value="tbl_"></property>
 <!-- 注入Sequence -->
 <property name="keyGenerator" ref="oracleKeyGenerator"></property>
 </bean>
 
 <!-- 配置Oracle主键Sequence -->
 <bean id="oracleKeyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"></bean>

本质:

其实在Oracle数据库中进行新增数据首先在数据库中先执行

select seq_user.nextval from dual;这样获取下一个主键的序列,然后再执行插入操作

另外:

实际开发中可能会有很多个实体类,所以在每个实体类上都加上@KeySequence,显得很繁琐

假如需要多个实体公用同一个序列

可以将@keySequence 定义在父类中, 可实现多个子类对应的多个表公用一个 Sequence

到此这篇关于浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法的文章就介绍到这了,更多相关Mybatis-Plus Oracle 主键Sequence内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java数据结构关于栈的实例应用

    java数据结构关于栈的实例应用

    大家好,本篇文章主要讲的是java数据结构关于栈的实例应用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • SpringBoot深入探究四种静态资源访问的方式

    SpringBoot深入探究四种静态资源访问的方式

    这一节详细的学习一下SpringBoot的静态资源访问相关的知识点。像这样的知识点还挺多,比如SpringBoot2的Junit单元测试等等。本章我们来了解静态资源访问的四种方式
    2022-05-05
  • 解决redisTemplate向redis中插入String类型数据时出现乱码问题

    解决redisTemplate向redis中插入String类型数据时出现乱码问题

    这篇文章主要介绍了解决redisTemplate向redis中插入String类型数据时出现乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 详解maven配置多仓库的方法示例

    详解maven配置多仓库的方法示例

    这篇文章主要介绍了详解maven配置多仓库的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • MyBatis-Plus标签@TableField之fill自动填充方式

    MyBatis-Plus标签@TableField之fill自动填充方式

    这篇文章主要介绍了MyBatis-Plus标签@TableField之fill自动填充方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • SpringBoot整合MybatisPlus实现增删改查功能

    SpringBoot整合MybatisPlus实现增删改查功能

    MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动。本文将整合MybatisPlus实现增删改查功能,感兴趣的可以了解一下
    2022-05-05
  • Java语言实现二叉堆的打印代码分享

    Java语言实现二叉堆的打印代码分享

    这篇文章主要介绍了Java语言实现二叉堆的打印代码分享,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • Java经纬度小数与度分秒相互转换工具类示例详解

    Java经纬度小数与度分秒相互转换工具类示例详解

    这篇文章主要介绍了Java经纬度小数与度分秒相互转换工具类,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java对字符串进行加密解密

    Java对字符串进行加密解密

    这篇文章主要为大家详细介绍了Java字符串加密解密,对用户输入的每个字符的值进行加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • mybatis动态新增(insert)和修改(update)方式

    mybatis动态新增(insert)和修改(update)方式

    这篇文章主要介绍了mybatis动态新增(insert)和修改(update)方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论