文档章节

用GeneratedKeyHolder获得新建数据主键值

i_bobby
 i_bobby
发布于 2014/11/10 11:17
字数 258
阅读 322
收藏 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. 索引类型 根据数据库的功能,可以在数据库设计器中创建索引:唯一索引、主键索引和聚集索引。 尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。 1.1 唯一索引...

软通快递
2017/06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

what f,,

anlve
35分钟前
0
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
9
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
13
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部