利用GeneratedKeyHolder获得新建数据主键值

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

Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值。假设我们希望在新增论坛板块对象后,希望将主键值加载到对象中,则可以按以下代码进行调整:

 1 final String INSERT_SQL = "insert into gtable(username,callback) values(?,?)";
 2         KeyHolder keyHolder = new GeneratedKeyHolder();
 3         jdbcTemplate.update(new PreparedStatementCreator() {
 4             public PreparedStatement createPreparedStatement(
 5                     Connection connection) throws SQLException {
 6                 PreparedStatement ps = connection.prepareStatement(INSERT_SQL,
 7                         new String[] { "id" });
 8                 ps.setString(1, request.getUsername());
 9                 ps.setString(2, request.getCallback());
10                 return ps;
11             }
12         }, keyHolder);
13 logger.debug("id:" + keyHolder.getKey()+"long:"+keyHolder.getKey().longValue());
时间: 2024-11-07 00:41:15

利用GeneratedKeyHolder获得新建数据主键值的相关文章

利用GeneratedKeyHolder获得新增数据主键值

Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录所对应的主键值的方法: int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值.假设我们希望在新增论坛板块对象后,希望将主键值加载到对象中,则可以按以下代码进行调整: 1 public Role crea

用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()

jdbc 预编译处理 和spring返回自增主键值

利用GeneratedKeyHolder获得新建数据主键值 Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值的方法 : int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)//该方法返回受影响的行数,同时将新增记录对应主键值赋值给generatedKeyHolder参数 Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该

Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">     <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">    SELECT U_US

JDBC:元数据 &amp;&amp; 获取插入记录的主键值 &amp;&amp; _JDBC_处理 Blob

一.元数据 DatabaseMetaData类 DatabaseMetaData 类中提供了许多方法用于获得数据源的各种信息,通过这些方法可以非常详细的了解数据库的信息: getURL():返回一个String类对象,代表数据库的URL. getUserName():返回连接当前数据库管理系统的用户名. isReadOnly():返回一个boolean值,指示数据库是否只允许读操作. getDatabaseProductName():返回数据库的产品名称. getDatabaseProductV

JDBC学习笔记(6)——获取自动生成的主键值&amp;处理Blob&amp;数据库事务处理

获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: 1 /** 2 * 获取数据库自动生成的主键 3 */ 4 @Test 5 public void testGetKeyValues(){ 6 Connection connection=null; 7 PreparedStatement preparedStatement=null; 8 ResultSet rs=n

JDBC Insert语句插入Oracle数据库返回数据主键

表结构: create table test( id varchar2(32) primary key, name varchar2(32) ); import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Test { /** * 使用S

IBatisNet:让insert操作返回新增记录的主键值

项目引用ibatis包: IBatisNet.Common.dll --文件版本1.6.2.0 IBatisNet.DataAccess.dll IBatisNet.DataMapper.dll 项目目录结构: 项目中使用ibatis做数据访问层已经有好长时间了.开发小组成员反映ibatis的insert操作返回的结果是null,这一点很是不爽. 其实,大家都是希望能够把新增记录的主键值返回出来. 上上周,大家有反编译ibatis的包,查看其实现原理,后来,又尝试其他方法,都没能给实现这个功能.

获取mybaties插入记录自动增长的主键值

首先在Mybatis Mapper文件中insert语句中添加属性"useGeneratedKeys"和"keyProperty",其中keyProperty是保存主键值的属性. 例如: <insert id="save" parameterType="Survery" useGeneratedKeys="true" keyProperty="pkId"> insert in