mysql usegeneratedkeys_Mybatis Generator insert useGeneratedKeys keyProperty[通俗易懂]

mysql usegeneratedkeys_Mybatis Generator insert useGeneratedKeys keyProperty[通俗易懂]Mybatis自动生成代码,需要用到mybatisGenerator,详见http://mybatis.github.io/generator/configreference/generatedKey.htmlinsert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如insertintosubtasks(SID,TID,RID,S…

大家好,又见面了,我是你们的朋友全栈君。

Mybatis自动生成代码,需要用到mybatis

Generator,详见http://mybatis.github.io/generator/configreference/generatedKey.html

insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如

69c5a8ac3fa60e0848d784a6dd461da6.pnginsert into subtasks (SID, TID, RID,

START, INTERVALL, SCHEDULE,

RESULTS, STYLE)

values (#{sid,jdbcType=INTEGER}, #{tid,jdbcType=INTEGER}, #{rid,jdbcType=INTEGER},

#{start,jdbcType=TIMESTAMP}, #{interval,jdbcType=INTEGER}, #{schedule,jdbcType=INTEGER},

#{results,jdbcType=VARCHAR}, #{style,jdbcType=INTEGER})

69c5a8ac3fa60e0848d784a6dd461da6.png

如果要让generator自动添加该功能,可以如下配置:

则通过generator自动生成的Mapper文件里的insert语句则类似如下:

69c5a8ac3fa60e0848d784a6dd461da6.png

SELECT LAST_INSERT_ID()insert into test (TASKID)

values (#{taskid,jdbcType=INTEGER})

69c5a8ac3fa60e0848d784a6dd461da6.png

其中generateKey的sqlStatement属性见下表:

Attribute

Description

column

The column name of the generated column.

sqlStatement

The SQL statement that will return the new value. If this is an

identity column, then you can use one of the predefined special values, or

substitute the proper statement for your database. The predefined special

values are as follows:

Cloudscape

This will translate to: VALUES

IDENTITY_VAL_LOCAL()

DB2

This will translate to: VALUES

IDENTITY_VAL_LOCAL()

DB2_MF

This will translate to:

SELECT IDENTITY_VAL_LOCAL()

FROM SYSIBM.SYSDUMMY1

Use this value for DB2 on zOS (Main Frames) and, in some cases,

iSeries (AS/400)

Derby

This will translate to: VALUES

IDENTITY_VAL_LOCAL()

HSQLDB

This will translate to: CALL IDENTITY()

Informix

This will translate to: select dbinfo(‘sqlca.sqlerrd1‘)

from systables where tabid=1

MySql

This will translate to: SELECT

LAST_INSERT_ID()

SqlServer

This will translate to: SELECT

SCOPE_IDENTITY()

SYBASE

This will translate to: SELECT @@IDENTITY

JDBC

This will configure MBG to generate code for MyBatis3 suport of

JDBC standard generated keys. This is a database independent method

of obtaining the value from identity columns.

Important: This value will only produce

valid code when the target runtime is MyBatis3. If used with iBATIS2

target runtimes it will produce code with runtime

errors.

关于mybatis的mapper文件的xml学习可以参考:http://my.oschina.net/zplswf/blog/63981

其中关于useGeneratedKeys和keyProperty参考下表:

属性

描述

id

在命名空间中唯一的标识符,可以被用来引用这条语句。

parameterType

将会传入这条语句的参数类的完全限定名或别名。

parameterMap

这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。

flushCache

将其设置为 true,不论语句什么时候被带哦用,都会导致缓存被清空。默认值:false。

timeout

这个设置驱动程序等待数据库返回请求结果, 并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。

statementType

STA TEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis 使用选择使用

Statement,PreparedStatement 或 CallableStatement。默认值:PREPARED。

useGeneratedKeys

( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的 getGeneratedKeys

方法来取出由数据(比如:像 MySQL 和 SQL Server 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。

keyProperty

(仅对 insert 有用) 标记一个属性, MyBatis 会通过 getGeneratedKeys 或者通过 insert 语句的

selectKey 子元素设置它的值。默认: 不设置。

keyColumn

(仅对 insert 有用) 标记一个属性, MyBatis 会通过 getGeneratedKeys 或者通过 insert 语句的

selectKey 子元素设置它的值。默认: 不设置。

原文:http://www.cnblogs.com/dorothychai/p/3760031.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148743.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【西安xxx面经】

    【西安xxx面经】我是在线下一天面完的,总共有五面。一面:自我介绍,问题基本上都是根据简历上问的,我简历上写了算法和数据结构所以问题都是和这些相关。一面有两个面试官,先问了面向对象的思想,面向对象的三大特性,分别解释一下。然后就是数据结构方面的知识:栈,队列,哈希表,如果数据很多的话用哈希表怎么存储。手撕二分,然后手撕一个关于链表的题:现在有很多节点,每个节点都有它在链表中的编号,现在要按照编号将这个链表复原。(因为面试官没有c++环境,所以我用的记事本编程,需要讲出来思路,每一句的作用)。面试体验:两个面试官还是有压力

    2022年5月15日
    33
  • Java大数据学习01–大数据的本质及学习顺序介绍

    Java大数据学习01–大数据的本质及学习顺序介绍随着互联网的使用人数越来越多,产生的数据也越来越多。根据数据我们可以分析出很多有用的信息。这也就是当前为什么大数据这么火的行为。学习大数据有很多种方式,但我们学习的载体是以目前最普遍,最流行的Java语言来进行学习。下面我们进入正题:1、首先是大数据的本质:大数据的本质无非两条:大数据的存储(Hadoop)和大数据的计算(Spark)存储:由于数据量巨大,把所有数据存在一个机器…

    2022年5月28日
    39
  • ETH被冻结_微信冻结显示什么界面

    ETH被冻结_微信冻结显示什么界面如果我们的电脑在启动挖矿软件的时候,发现界面有停顿,Miner都会冻结。有时矿工会随机冻结,直到按下任何键。而我们要做下如下设置则可以解决这个问题。1、cmd命名行界面;2、右击窗口,点属性大力矿工致力于挖矿软件研究,欢迎大家加入群:621159725,一起讨论ETH挖矿。…

    2022年10月15日
    2
  • 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的

    在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的

    2021年10月27日
    50
  • IntelliJ IDEA报错:Error:(1, 1) java: 非法字符: ‘\ufeff'[通俗易懂]

    IntelliJ IDEA报错:Error:(1, 1) java: 非法字符: ‘\ufeff'[通俗易懂]当我把Eclipse中的类拷贝到idea项目中,就出现了这个错误。查找资料得知:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,但使用IDEA编译UTF-8+BOM编码的文件时会出现这个错误:Error:(1, 1) java: 非法字符: ‘\ufeff’。关于UTF-8+BOM 参考 https://www.zhihu.com/question/20167122/an…

    2022年6月13日
    114
  • 轩辕剑五的乱码问题解决

    轩辕剑五的乱码问题解决轩辕剑5乱码解决方法2007年02月11日星期日10:32(轩辕剑五乱码、轩辕剑乱码转换、轩辕剑5化繁为简)轩辕剑五的乱码问题相当让人头疼,我用过win2k/xp/Vista区域模拟和化繁

    2022年7月3日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号