一、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内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍谈谈C++学习之Pair的使用方法,包括了谈谈C++学习之Pair的使用方法的使用技巧和注意事项,需要的朋友参考一下 一、Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。 也可以像上
本文向大家介绍浅析Mybatis Plus和Mybatis的区别,包括了浅析Mybatis Plus和Mybatis的区别的使用技巧和注意事项,需要的朋友参考一下 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。 通俗来讲—— MyBatis:一种操作数据库的框架,提供一种Mapper类,支持让你用java代码进行增删改查的数据库操作,省去了每次
今天不讨论MyBatis-Plus好与差,光谈谈MyBatis-Plus的注解使用。 Mybatis-Plus注解 数据库表名根据不同业务区分前缀 例如sys_user,实体类User.java怎么指向关联呢 实体类名称与表名一直,下划线后开头为大写,驼峰式命名 使用mybatis-plus提供的@TableName("sys_user")表名注解
本文向大家介绍浅谈Django学习migrate和makemigrations的差别,包括了浅谈Django学习migrate和makemigrations的差别的使用技巧和注意事项,需要的朋友参考一下 本文主要研究的是Django中migrate和makemigrations的差别,具体如下。 在你改动了 model.py的内容之后执行下面的命令: Python manger.py makemi
本文向大家介绍浅谈docker-compose网络设置之networks,包括了浅谈docker-compose网络设置之networks的使用技巧和注意事项,需要的朋友参考一下 networks使用方式之官网教程 官网的docker-compose.yml参考文档:Compose file version 3 reference 较为准确的中文翻译版:Compose file version 3
本文向大家介绍浅谈MyBatis 事务管理,包括了浅谈MyBatis 事务管理的使用技巧和注意事项,需要的朋友参考一下 1. 运行环境 Enviroment 当 MyBatis 与不同的应用结合时,需要不同的事务管理机制。与 Spring 结合时,由 Spring 来管理事务;单独使用时需要自行管理事务,在容器里运行时可能由容器进行管理。 MyBatis 用 Enviroment 来表示运行环境,