文档章节

用GeneratedKeyHolder获得新建数据主键值

i_bobby
 i_bobby
发布于 2014/11/10 11:17
字数 258
阅读 320
收藏 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
jdbcTemplate 插入数据到oracle 获得id

final String sql = "INSERT INTO gameuser(userid,nickname,useraccount,createtime) VALUES(gameuserid.nextval,?,?,sysdate)"; KeyHolder kh = new GeneratedKeyHolder(); this.getJdbcTe......

os_vc
2016/05/07
55
0
C#操作注册表

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

晨曦之光
2012/05/16
633
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
服务器断电后自动重启

一、1.首先进入BIOS 的设置主界面, 选择[POWER MANAGEMENT SETUP],再选择[PWRLost Resume State],这一项有三个选择项。 选择[Keep OFF]项,代表停电后再来电时,电脑不会自动启动。选择[...

robortly
2015/10/24
936
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
6分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
8分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
10分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
11分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
13分钟前
365
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部