文档章节

Mybatis插入数据行ID生成策略

boonya
 boonya
发布于 2016/06/15 11:24
字数 338
阅读 4578
收藏 7

Oracle:

<insert id="insert" parameterType="vo.Category">

<selectKey resultType="java.lang.Short" order="BEFORE" keyProperty="id">

SELECT SEQ_TEST.NEXTVAL FROM DUAL

</selectKey>

insert into category (id,name_zh, parent_id,

show_order, delete_status, description

)

values (
#{id,jdbcType=NUMBER},

#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=NUMBER},

#{showOrder,jdbcType=NUMBER},

#{deleteStatus,jdbcType=NUMBER},

#{description,jdbcType=VARCHAR}

)

</insert>

MySQL:

针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL,可以采用如下两种配置方式:
 

<insert id="insert" parameterType="vo.Category" useGeneratedKeys="true" keyProperty="id">

insert into category (id,name_zh, parent_id,

show_order, delete_status, description

)

values (
#{id,jdbcType=INTEGER},

#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=INTEGER},

#{showOrder,jdbcType=INTEGER},

#{deleteStatus,jdbcType=BIT},

#{description,jdbcType=VARCHAR}

)

</insert>


 

<insert id=" insert " parameterType="vo.Category">

<selectKey resultType="java.lang.Short" order="AFTER" keyProperty="id">

SELECT LAST_INSERT_ID() AS id

</selectKey>

insert into category (id,name_zh, parent_id,

show_order, delete_status, description

)

values (
#{id,jdbcType=INTEGER},

#{nameZh,jdbcType=VARCHAR},

#{parentId,jdbcType=INTEGER},

#{showOrder,jdbcType=INTEGER},

#{deleteStatus,jdbcType=BIT},

#{description,jdbcType=VARCHAR}

)

</insert>

UUID:

在Oracle中:

<insert id="insert" parameterType="com.xxx.SystemDepartment">

    <selectKey keyProperty="id" resultType="String" order="BEFORE">

        select sys_guid() from dual

    </selectKey>

    insert into SYSTEM_DEPARTMENT (ID,DEPNAME, SUPERID, SORT, STATE)

    values ( #{id,jdbcType=VARCHAR},#{depname,jdbcType=VARCHAR},

    #{superid,jdbcType=DECIMAL}, #{sort,jdbcType=DECIMAL},

    #{state,jdbcType=DECIMAL})

</insert>

在Mysql中:

<insert id="insert" parameterType="com.xxx.SystemDepartment">

    <selectKey keyProperty="id" resultType="String" order="BEFORE">

        SELECT UUID()

    </selectKey>

    insert into SYSTEM_DEPARTMENT (ID,DEPNAME, SUPERID, SORT, STATE)

    values ( #{id,jdbcType=VARCHAR},#{depname,jdbcType=VARCHAR},

    #{superid,jdbcType=INTEGER}, #{sort,jdbcType=INTEGER},

    #{state,jdbcType=INTEGER})

</insert>

注:UUID如不需要连字符'-'可以使用数据库函数进行处理,如mysql:  select  replace(uuid(),'-','')   UUID  ;

© 著作权归作者所有

上一篇: Git命令入门
boonya
粉丝 76
博文 282
码字总数 50711
作品 0
成都
高级程序员
私信 提问
MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略

前言: 在oracle中一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长、开始索引、是否循环...

pangfc
2017/01/06
0
0
MyBatis 逆向工程--MyBatis-CMEU

基本介绍 Mybatis-CMEU全称为:Mybatis Config Mapper Util ,是基于javafx8开发的一款图形界面的Mybatis逆向工程。 该工具支持Oracle , SqlServer , MySQL , PostgreSql数据库的逆向生成;使...

Mirren
2017/06/03
2.4K
5
一文MyBatis-Plus快速入门

一、依赖及配置 使用下面的SQL创建数据库与添加数据 1、在idea中创建一个SpringBoot项目,在pom.xml中添需要的依赖 添加MyBatis-Plus、mysql连接驱动、lombok的依赖 2、配置数据库连接 appl...

享智同行
05/16
0
0
从企业级架构迁移到互联网架构的工程实践

因工作变动接手了一个云平台改造项目,该项目属于己经上线且每月有大量交易订单的云平台,之前采用的是SpringMVC+Hibernate+FreeMarker+MySql架构,集web前端和接口为一体。经过对业务增长趋...

Elvis.Xiong
2016/09/18
1K
18
JDBC insert后得到主键的方式

使用JDBC,或者通过hibernate,mybatis等orm框架,执行insert语句,要怎么得到新生成记录的主键呢? 大体有两种方式,1. 在执行insert前,生成主键,那么主键和普通的列就没有区别,2. 执行i...

BlueWoods
2015/07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL build

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=lumpsucker&dt=2019-06-23%2020%3A57%3A27...

MtrS
今天
3
0
八、Docker Swarm

Docker Swarm有两件事:一个企业级的Docker主机安全集群,另一个是用于协调微服务应用程序的引擎。 在集群方面,它将一个或多个Docker节点组合在一起,并允许你将他们作为一个集群来管理。开...

倪伟伟
昨天
7
0
Fragment懒加载其实很简单

前言 记得去年面试的时候, 面了一家小公司, 那个面试官问我, fragment的懒加载做过吗?我说没做过(确实没做过).后来面试快结束了, 又问我, 懒加载没做过是吗?后来可想而知也没收到offer, (ಥ_...

天王盖地虎626
昨天
5
0
聊聊dubbo的TimeoutFilter

序 本文主要研究一下dubbo的TimeoutFilter ListenableFilter dubbo-2.7.2/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/ListenableFilter.java public abstract class Liste......

go4it
昨天
9
0
方法与数组

方法 方法就是完成特定功能的代码块;在很多语言里面都有函数的定义,函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) throw 异常{ 函数体;...

凹凸凸
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部