文档章节

Mybatis插入数据行ID生成策略

macwhirr
 macwhirr
发布于 2017/09/07 10:39
字数 338
阅读 4
收藏 0

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  ;

本文转载自:https://my.oschina.net/boonya/blog/692232

macwhirr
粉丝 0
博文 3
码字总数 222
作品 0
朝阳
程序员
私信 提问

暂无文章

非webpack require.js + vue + vueRouter + iView 实现按需加载

适合一个人开发的时候,在整个php框架下,又想单页,又可以直接后端assign变量穿透到模板。又不想写接口搞前后分离脚手架一大堆npm 包, 在php模板下 引入require.js <!DOCTYPE html><html...

一箭落旄头
23分钟前
7
0
新特性解读 | MySQL 8.0 窗口函数详解

原创作者: 杨涛涛 背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能。不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF...

爱可生
29分钟前
3
0
23.5 jumpserver介绍

23.5 jumpserver介绍 开源堡垒机jumpserver介绍: 官网www.jumpserver.org Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理 Auth...

oschina130111
35分钟前
5
0
Spring Cloud 入门教程(七): 消息总线(Spring Cloud Bus)(Greenwich.RELEASE)

参考网址:https://blog.csdn.net/forezp/article/details/81041062,由于此文中作者基于git和rabbitMq,为了适应内网我改造为基于mysql和kafka 一、准备工作 1、安装kafka 参考这个:kafka...

pipi1919
36分钟前
3
0
用人工智能改变企业与客户的连接方式

  随着以AI人工智能技术为主的新一代信息技术的快速商业化落地,我国的数字经济正高歌猛进。2017年我国数字经济对GDP的贡献率为55%,接近甚至超越了某些发达国家水平,2018年我国数字经济规...

琴殇的
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部