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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 《前端运维》二、Nginx–3静态资源服务、跨域与其他「建议收藏」

    一、静态资源服务首先,静态资源一般是指客户端发送请求到Web服务器,web服务器从内存中取得相应的文件,返回给客户端,客户端解析并渲染出来。动态资源呢,则是由客户端发起请求,先交由web容器,web

  • 虚拟机VMware 运行不了系统的常见2个问题

    虚拟机VMware 运行不了系统的常见2个问题

  • 投影矩阵与最小二乘法_最小二乘法和矩阵求逆

    投影矩阵与最小二乘法_最小二乘法和矩阵求逆投影矩阵与最小二乘二者有什么必然的联系么,当我开始写这篇文章的时候我也这样问自己。如果Strang教授没有教授这堂课亦或者讲的这堂课没有被放到网上被别人所下载观看,那么…好在一切都是那么的幸运先说说投影吧,这个想必大家都知道,高中的知识了。一个向量(b)在另一个向量(a)上的投影:实际上就是寻找在a上离b最近的点。如果我们把p看作是a的估计值,那么我们定义e

  • 关于cpp中左值和右值的细枝末节

    一、基本概念  本文主要分析右值引用中的:移动语意(movesemantics)。  要想理解右值,首先得能够判断具体什么是右值,先来看一些关于右值的判定条件:  一、任何表达式不是左值就是右值,左值和右值只的是针对表达式定义的。      这个比较容易理解,inttemp=10,func(),doublea=0.0,x++,++x,*ptr,x+y这些都是…

  • vueaxios跨域请求_vue如何实现跨域

    vueaxios跨域请求_vue如何实现跨域前端设置axios跨域constaxios=require(“axios”)axios.defaults.withCredentials=true后端设置:express…app.use(‘*’,function(req,res,next){res.setHeader(“Access-Control-Allow-Origin”,”http://localhost:8080″);res.setHeader(“Access-Control-Allo

  • 软件测试之因果图[通俗易懂]

    软件测试之因果图[通俗易懂]1.某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

发表回复

您的电子邮箱地址不会被公开。

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