`

mybatis oracle自增长和UUID两种主键生成策略

 
阅读更多

 

oracle数据库自增长没有mysql数据库简单,mysql可以在建表的时候设置auto_increment就好了,但oracle这样不行,oracle数据库必须要建立序列,然后在mybatis插入id时使用这个序列后,才能实现oracle id的自增长。

下面是序列的创建语句:

 

create sequence TBAL_OA_HOLIDAY_TYPE //序列名称
increment by 1  //以1倍的速度增长,你也可以设置其他数字
start with 1    //从id=1开始增长
 maxvalue 9999  //最大值为9999,根据情况
 minvalue 1     //最小值1
 nocycle        //不循环,也就是一直增长       
 cache 20       //设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
noorder;

 

 

建立了oracle序列之后,我们就可以在mybatis中插入这样使用,来插入id了:

 

    insert into TBL_OA_HOLIDAY_TYPE (ID, TYPE_NAME, REMARK
      )
    values (TBAL_OA_HOLIDAY_TYPE.NEXTVAL, #{typeName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}
      )

 

 

我们在插入mybatis插入id的位置用(序列名称+ .NEXTVAL)的形式代替这个id,而不是#{xxx}这样从页面取值了,就是这么简单,自己试试吧,当然了,id必须得是number类型的才行。

如果是UUID作为主键,那么主键用varchar2类型,这样才能用字符串uuid,以下是mybatis oracle的uuid使用方法,比oracle自增长容易很多:

使用uuid作为主键,oracle中有个sys_guid函数可以产生uuid。

 

<insert id="insert" parameterType="com.xxx.SystemDepartment">
    <selectKey keyProperty="id" resultType="String" order="BEFORE">
        select sys_guid() from dual
    </selectKey>
     insert into TBL_OA_HOLIDAY_TYPE (ID, TYPE_NAME, REMARK
      )
    values (#{id,jdbcType=VARCHAR}, #{typeName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}
      )
</insert>

 

SelectKey属性作用如下:

属性 描述
keyProperty selectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
keyColumn 匹配属性的返回结果集中的列名称。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
resultType 结果的类型。MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什么问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。如果希望作用于多个生成的列,则可以使用一个包含期望属性的 Object 或一个 Map。
order 这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素 - 这和像 Oracle 的数据库相似,在插入语句内部可能有嵌入索引调用。
statementType 与前面相同,MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 语句的映射类型,分别代表 PreparedStatement 和 CallableStatement 类型。

 

 

mybatis中 insert、update、delete返回的都是int,就是操作成功的记录数,SelectKey的作用是将查询值插入对象属性。

比如insert的参数是一个Person对象,SelectKey的keyProperty值是Person的id属性,执行后会将参数对象Person的id设置成SelectKey查询值,

可以在参数对象中获取

 

 

 

 

 

分享到:
评论

相关推荐

    spring boot整合mybatis利用Mysql实现主键UUID的方法

    在Spring Boot项目中,整合MyBatis并利用MySQL实现主键UUID是一种常见的需求,尤其是在分布式系统中,为了保证数据的一致性和唯一性。UUID(Universally Unique Identifier)是一种全局唯一的标识符,它由128位数字...

    mybatis-plus主键生成策略

    MyBatis-Plus主键生成策略是其框架中一个重要的特性,它提供了多种方式来生成主键ID,以便适应不同的数据库环境和业务需求。MyBatis-Plus的默认策略是Twitter的“Snowflake”算法,它能生成全局唯一的长整型ID。然而...

    mybatis自动生成实例支持oracle和MySQL

    在"mybatis自动生成实例支持oracle和MySQL"的场景中,我们可以理解为该压缩包包含了一个能够帮助开发者自动生成针对Oracle和MySQL数据库的相关代码的工具或教程。 1. **MyBatis自动化工具**: MyBatis Generator ...

    mybatis自动代码生成工具(映射mysql,oracle)

    该工具支持 MySQL 和 Oracle 两大主流关系型数据库,能够根据数据库中的表信息自动生成对应的 Java 代码,减少了手动编写这些重复性工作的时间。 首先,我们来了解 MyBatis 本身。MyBatis 是一款优秀的持久层框架,...

    mybatis自定义生成代码策略示例

    在 `MBGeneratorExample` 这个示例中,很可能是提供了一个完整的配置文件和自定义插件,用于演示如何自定义 MyBatis 的代码生成策略。这个例子可能包括了如何生成 Entity 类、DAO 接口及其实现,以及 Mapper XML ...

    SpringBoot+Mybatis+Oracle代码demo

    在本项目"SpringBoot+Mybatis+Oracle代码demo"中,开发者旨在提供一个集成SpringBoot、Mybatis和Oracle数据库的示例,以帮助初学者更好地理解和应用SpringBoot框架。下面将详细阐述这三个核心技术及其在项目中的应用...

    SpringBoot+mybatis+Oracle整合代码

    进一步研究这个文件,我们可以看到具体如何组织和实现SpringBoot、MyBatis和Oracle的整合。 通过深入学习和实践这个整合代码,开发者可以掌握SpringBoot的便捷性,MyBatis的灵活性,以及Oracle数据库的强大功能,...

    使用Mybatis Generator自动生成Mybatis相关代码(包含Mysql与Oracle)

    总结来说,Mybatis Generator通过配置文件连接数据库,并根据数据库表结构自动生成Java实体类、Mapper接口和Mapper XML文件,为开发者提供了一种高效便捷的方式来处理Mybatis的持久层代码。无论是Mysql还是Oracle,...

    mybatis连接oracle实例

    Oracle则是一种广泛使用的大型关系型数据库管理系统,尤其在企业级应用中非常常见。本实例将指导你如何使用MyBatis连接Oracle数据库,并在Oracle中创建一个名为`test`的表。 首先,确保你已经安装了Eclipse集成开发...

    springboot整合mybatis调用oracle存储过程

    在IT行业中,Spring Boot和MyBatis是两个非常流行的框架,它们被广泛用于构建高效、简洁的Java应用程序。Oracle数据库则是企业级应用中常见的关系型数据库,存储过程是其提供的一种强大功能,允许开发者编写复杂的...

    mybatis-generate连接oracle生成带注释和小写的实体类

    mybatis-generate连接oracle生成带注释和小写的实体类

    mybatis的oracle的批量插入优化和mybatis的generator自动生成三层文件

    本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...

    mybatis逆向生成工具(oracle).rar

    MyBatis逆向生成工具是开发过程中常用的辅助软件,它能帮助开发者快速生成基于MyBatis框架的SQL映射文件、Mapper接口以及实体类等代码,极大地提高了开发效率。Oracle数据库是这款工具所针对的数据源,它是一款广泛...

    MyBatis Oracle 自增序列的实现方法

    本文将详细讲解如何在MyBatis中实现Oracle的自增序列,并配置MyBatis以支持Oracle的主键自增长。 首先,你需要在Oracle数据库中创建一个序列对象。例如,你可以创建一个名为`SEQ_TABLE`的序列: ```sql CREATE ...

    oracle 结合 mybatis-plus 逆向工程生成代码,以便大家使用

    Oracle 和 MyBatis-Plus 的结合使用是一种常见的数据库操作方式,尤其在开发过程中,通过逆向工程生成代码能显著提高开发效率。MyBatis-Plus 是 MyBatis 的一个扩展,它提供了许多便利的功能,包括自动 CRUD(创建、...

    mybatis自动生成的两种方式

    本篇文章将详细介绍MyBatis的两种自动生成代码的方式,帮助你提升开发效率。 一、MyBatis Generator(MBG) MBG是MyBatis官方提供的一个代码生成工具,它可以自动生成Java模型类、Mapper接口和XML配置文件。通过...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    "解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...

    mybatis自动sql生成插件源码

    1. **插入(Insert)**: 根据对象属性生成INSERT INTO语句,自动处理主键生成策略,如自增主键或UUID等。 2. **删除(Delete)**: 根据主键或唯一索引值生成DELETE FROM语句,确保数据的安全性。 3. **更新(Update...

    mybatis + oracle demo

    4. **Java接口和实现**:定义Mapper接口,每个方法对应XML文件中的一个SQL语句,实现类则通常由MyBatis自动生成。 5. **实体类**:映射数据库表的结构,用于数据的封装和传输。 6. **事务管理**:根据业务需求设置...

    mybatis-oracle逆向工程工具

    MyBatis-Oracle逆向工程工具是一款高效实用的开发辅助软件,专为使用MyBatis框架和Oracle数据库的开发者设计。这款工具的核心功能是自动生成与数据库表结构对应的MyBatis映射文件、实体类以及DAO接口,极大地提高了...

Global site tag (gtag.js) - Google Analytics