文档章节

用GeneratedKeyHolder获得新建数据主键值

i_bobby
 i_bobby
发布于 2014/11/10 11:17
字数 258
阅读 327
收藏 0

Spring提供了一个可以返回新增记录对应主键值的方法: 
int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)

Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值。
如:新增用户对象后,希望将主键值加载到对象中: 

public  User  createUser ( final  User  user )  {
         final  String  sql  =  "insert into sys_users(username, password, salt, locked) values(?,?,?, ?)" ;
         GeneratedKeyHolder  keyHolder  =  new  GeneratedKeyHolder ( ) ;
         jdbcTemplate . update ( new  PreparedStatementCreator ( )  {
              public  PreparedStatement  createPreparedStatement ( Connection  connection )  throws  SQLException  {
                   PreparedStatement  psst  =  connection . prepareStatement ( sql ,  new  String [ ]  {  "id"  }) ;
                   psst . setString ( 1 ,  user . getUsername ( )) ;
                   psst . setString ( 2 ,  user . getPassword ( )) ;
                   psst . setString ( 3 ,  user . getSalt ( )) ;
                   psst . setBoolean ( 4 ,  user . getLocked ( )) ;
                   return  psst ;
              }
         } ,  keyHolder ) ;
         user . setId ( keyHolder . getKey ( ) . longValue ( )) ;
         return  user ;
     }




© 著作权归作者所有

共有 人打赏支持
i_bobby
粉丝 11
博文 51
码字总数 20985
作品 0
西安
程序员
私信 提问
Spring KeyHolder

国庆假期抽时间学习一下,在看spring的过程中,看到,我有点惊讶,这种设计模式真是的太巧妙了,平时为什么想不到,也运用不上,所以在此记录下来,也分享一下 KeyHolder 你觉得这个接口很奇...

小彬彬_
2016/10/04
46
0
通过java api提交自定义hadoop 作业

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/43734989 通过API操作之前要先了解几个基本知识 一、hadoop的基本数据类型和j...

jchubby
2015/02/11
0
0
C#操作注册表

名字空间Microsoft.Win32 以下从‘读’‘写’‘删除’‘判断’四个事例实现对注册表的简单操作 1.读取指定名称的注册表的值 private string GetRegistData(string name) { string registDat...

晨曦之光
2012/05/16
641
0
jdbcTemplate 插入数据到oracle 获得id

final String sql = "INSERT INTO game_user(user_id,nickname,user_account,create_time) VALUES(game_user_id.nextval,?,?,sysdate)"; KeyHolder kh = new GeneratedKeyHolder(); this.get......

zvc888
2016/05/07
164
0
SpringJDBC jdbcTemplate获取自增主键

String sql = "insert into notice_type(typeName,configType,state,creatorID,corpID,createTime) values (?,?,?,?,?,?)"; Object[] objs = new Object[]{ noticeType.getTypename(), notic......

乾坤刀
2017/06/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Batch @SpringBatchTest 注解

Spring Batch 提供了一些非常有用的工具类(例如 JobLauncherTestUtils 和 JobRepositoryTestUtils)和测试执行监听器(StepScopeTestExecutionListener 和 JobScopeTestExecutionListener)......

honeymose
24分钟前
2
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
37分钟前
2
0
正则表达式简单使用说明

在Python3里确实简单明了,测试样例如下 # 正则content = 'Hello 1234567 World_This is a Regex Demo'# 贪婪匹配 尽可能多的匹配result = re.match('^He.*(\d+).*Demo$', co......

轻轻的往前走
38分钟前
2
0
多线程创建方式

一、基本概念 进程:就是正在运行的应用程序,进程是线程的集合。 线程:就是进程中的一条执行路径,一个独立的执行单元。 多线程:就是为了提高程序的效率,使用多线程,每个线程互不影响,...

秋至丶枫以落
42分钟前
2
0
聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
50分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部