`
yangpanwww
  • 浏览: 624930 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring的JdbcTemplate插入操作返回主键ID的方法

阅读更多

 

 

Spring的JdbcTemplate插入操作返回主键ID的方法:Srping 2.5

 

	/**
	 * 妞见妞爱
	 * 
	 * 增加并且获取主键
	 * @param sql sql语句
	 * @param params 参数
	 * @return 主键
	 */
	public  Long insertAndGetKey(final String sql, final SmsBean smsbean) {
		KeyHolder keyHolder = new GeneratedKeyHolder();
		jdbcTemplate.update(new PreparedStatementCreator() {
			public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
				
				//String sql_sms = "insert into  sms(title,content,date_s,form,sffs,by1,by2,by3) values (?,?,'"+dates+"',?,?,?,?,?)"; 
                PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
                ps.setString(1, smsbean.getTitle());
                ps.setString(2, smsbean.getContent());
                ps.setString(3, smsbean.getForm());
                ps.setString(4, smsbean.getSffs());
                /*
				 * by1 存放的是 草稿主人的ID
				 * 当消息为发送。清楚by1的ID   
				 */	
                ps.setString(5, "");
                ps.setString(6, smsbean.getBy2());
                ps.setString(7, smsbean.getBy3());
                return ps;
			}
		}, keyHolder);
		
		Long generatedId = keyHolder.getKey().longValue(); 
		return generatedId;
	}

 

 

  上面是我开发中的代码...但是一直有个问题没解决  就是 在这个方法中保存日期的时候老是报错。。

  由于项目时间紧 也没时间去研究...所以就把 日期 拼接在 sql 语句中了。。。O(∩_∩)O哈哈~

 

  有空我在测试...今天先到这里....

分享到:
评论
4 楼 zx12366 2013-12-31  
不错,帮助了我,谢谢!收藏,做个笔记
3 楼 yangpanwww 2012-06-20  
int result = 0;
final String sql = "insert into Tstudent (username , password , address , time) values ( ? , ? , ? , ?)";
KeyHolder holder=new GeneratedKeyHolder();
result=jdbcTemplate.update(new PreparedStatementCreator() {

public PreparedStatement createPreparedStatement(Connection con)
throws SQLException {
PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1, student.getUsername());
ps.setString(2, student.getPassword());
ps.setString(3, student.getAddress());
ps.setDate(4, new Date(student.getTime().getTime()));
return ps;
}
}, holder);
zhangpeili 写道
int result = 0;
final String sql = "insert into Tstudent (username , password , address , time) values ( ? , ? , ? , ?)";
KeyHolder holder=new GeneratedKeyHolder();
result=jdbcTemplate.update(new PreparedStatementCreator() {

public PreparedStatement createPreparedStatement(Connection con)
throws SQLException {
PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1, student.getUsername());
ps.setString(2, student.getPassword());
ps.setString(3, student.getAddress());
ps.setDate(4, new Date(student.getTime().getTime()));
return ps;
}
}, holder);
// KeyHolder holder = new GeneratedKeyHolder();
// result = namedParameterJdbcTemplate.update(sql,
// new BeanPropertySqlParameterSource(student), holder);
System.out.println(holder.getKey().intValue());
return result;
哥们这样就可以了,你获得date是java.util里面的,而java.sql是java.util的子类,



喔喔。。谢谢。。嘿嘿
2 楼 zhangpeili 2012-06-16  
int result = 0;
final String sql = "insert into Tstudent (username , password , address , time) values ( ? , ? , ? , ?)";
KeyHolder holder=new GeneratedKeyHolder();
result=jdbcTemplate.update(new PreparedStatementCreator() {

public PreparedStatement createPreparedStatement(Connection con)
throws SQLException {
PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1, student.getUsername());
ps.setString(2, student.getPassword());
ps.setString(3, student.getAddress());
ps.setDate(4, new Date(student.getTime().getTime()));
return ps;
}
}, holder);
// KeyHolder holder = new GeneratedKeyHolder();
// result = namedParameterJdbcTemplate.update(sql,
// new BeanPropertySqlParameterSource(student), holder);
System.out.println(holder.getKey().intValue());
return result;
哥们这样就可以了,你获得date是java.util里面的,而java.sql是java.util的子类,
1 楼 zhangpeili 2012-06-16  
String sql = "insert into Tstudent (username , password , address , time) values ( :username , :password , :address , :time)";
KeyHolder holder = new GeneratedKeyHolder();
result = namedParameterJdbcTemplate.update(sql,
new BeanPropertySqlParameterSource(student), holder);
System.out.println(holder.getKey().intValue())
你可以用这个,这个封装了jdbcTemplate,并且增加了新的特性!

相关推荐

    Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站.htm

    Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站

    spring自带的jdbcTemplate查询、插入预编译使用

    在这里,`update()`方法返回的是受影响的行数,可以用来判断操作是否成功。 除了基本的查询和更新,`jdbcTemplate`还支持回调(Callback)机制,允许我们在执行数据库操作的过程中进行额外的处理。例如,我们可以...

    jdbc保存对象返回一个主键

    3. **JdbcTemplate**:Spring框架中的一个类,用于简化JDBC的使用,提供了一组方便的方法来处理数据库操作。 #### 三、代码解析 假设我们有一个`MessageText`对象,需要将其保存到数据库,并希望在保存后能够获取...

    JdbcTemplate的事务控制.docx

    然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...

    jdbcTemplate集锦很好的推荐

    `jdbcTemplate`是Spring框架中的一个核心组件,主要用于简化对数据库的操作。它提供了一系列的API来帮助开发者执行SQL语句,处理结果集等,使得操作数据库变得更加简单且安全。 在实际应用中,`jdbcTemplate`通常...

    Spring对JDBC的支持

    在这个例子中,`SimpleJdbcInsert`类被用来简化插入操作,而`executeAndReturnKey()`方法执行插入并返回新生成的主键。 3. **使用JdbcTemplate进行数据库查询** 查询操作可以使用`query()`方法完成,它可以接受...

    汤阳光_Spring2.5课程文档(三)

    - 创建了一个名为`spring_jdbc`的数据库,并建立了一个名为`jdbcUser`的表,包含id(主键,自增长)、name和age三个字段。这一步是为了搭建一个基础环境来演示Spring+JDBC的数据库操作。 3. **配置数据源(c3p0)*...

    SpringJDBC训练素材.zip

    对于插入操作,Spring JDBC提供了SimpleJdbcInsert类,它可以自动生成INSERT语句并处理主键自增的问题。对于存储过程的调用,SimpleJdbcCall则扮演了关键角色,它可以方便地包装和执行数据库的存储过程。 在实际...

    SpringBoot  jdbctemplate使用方法解析

    JdbcTemplate的`update`方法返回的是受影响的行数,这对于判断操作是否成功非常有帮助。例如,插入操作返回1表示成功插入一条记录,更新和删除操作返回非0值表示有行被修改或删除。 在实际开发中,我们还会编写控制...

    spring3.10实现jdbc存储deom

    `SimpleJdbcInsert`则用于简化插入操作,自动处理主键生成等问题。 在开始项目之前,必须确保正确配置Spring的jar包依赖。"jar对应关系.txt"文件很可能详细列出了这些依赖,可能包括`spring-context`、`spring-jdbc...

    springj-dbc文档

    JdbcTemplate提供了各种执行SQL语句的方法,如execute、query、update等,可以处理简单的查询、复杂的多行更新和插入操作。例如,查询操作可以通过如下方式实现: ```java List<User> users = jdbcTemplate.query( ...

    spring详解3

    - **数据库创建**:首先,创建名为`spring_jdbc`的数据库,接着在该数据库下创建一张`t_user`表,用于存储用户信息,包含`id`(主键)、`name`(姓名)和`age`(年龄)字段。 - **配置数据源**:使用c3p0连接池...

    Spring数据库访问(HSQL)(三)

    接下来,为了运行SQL查询,可以使用JdbcTemplate的queryForList()方法获取结果集,或者update()方法执行插入、更新和删除操作。同时,可以使用PreparedStatement来防止SQL注入,提高安全性。 在实际应用中,我们...

    spring 中的jdbc

    1. `JdbcTemplate`:这是Spring JDBC的核心类,它提供了一组模板方法,用于执行SQL查询、更新和删除操作。`JdbcTemplate`通过自动处理结果集和异常,简化了数据库交互。 2. `SimpleJdbcInsert`:这是一个专门用于...

    springjdbc的简单运用以及Dojo的小案例,包括了Dojo的相关资料包

    `SimpleJdbcInsert`则专门用于简化插入操作,可以自动处理主键生成。 在实际运用中,我们首先需要配置数据源,这通常通过`DataSource`实现,如Apache的`BasicDataSource`。然后,我们可以创建`JdbcTemplate`实例,...

    Spring整合Hibernate示例完整代码

    6. **Model(实体类)**:在Hibernate中,我们需要定义实体类来表示数据库中的表,通常会使用@Entity注解标识,并通过@Id和@GeneratedValue指定主键。此外,还可以使用@Column和其他注解来进一步定制字段的映射。 7...

Global site tag (gtag.js) - Google Analytics