`
静夜独窗
  • 浏览: 57581 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

1.插入一条记录返回刚插入记录的id

public int addBean(final Bean b){
		
        final String strSql = "insert into buy(id,c,s,remark,line,cdatetime," +
        		"c_id,a_id,count,type) values(null,?,?,?,?,?,?,?,?,?)";
        KeyHolder keyHolder = new GeneratedKeyHolder();
        
        this.getJdbcTemplate().update(
                new PreparedStatementCreator(){
                    public java.sql.PreparedStatement createPreparedStatement(Connection conn) throws SQLException{
                        int i = 0;
                        java.sql.PreparedStatement ps = conn.prepareStatement(strSql); 
                        ps = conn.prepareStatement(strSql, Statement.RETURN_GENERATED_KEYS);
                        ps.setString(++i, b.getC());
                        ps.setInt(++i,b.getS() );
                        ps.setString(++i,b.getR() );
                        ps.setString(++i,b.getline() );
                        ps.setString(++i,b.getCDatetime() );
                        ps.setInt(++i,b.getCId() );
                        ps.setInt(++i,b.getAId());
                        ps.setInt(++i,b.getCount());
                        ps.setInt(++i,b.getType());
                        return ps;
                    }
                },
                keyHolder);
    
        return keyHolder.getKey().intValue();
    }

 2.批量插入数据

public void addBuyBean(List<BuyBean> list) 
	{ 
	   final List<BuyBean> tempBpplist = list; 
	   String sql="insert into buy_bean(id,bid,pid,s,datetime,mark,count)" +
	   		" values(null,?,?,?,?,?,?)"; 
	   this.getJdbcTemplate().batchUpdate(sql,new BatchPreparedStatementSetter() {

			@Override
			public int getBatchSize() {
				 return tempBpplist.size(); 
			}
			@Override
			public void setValues(PreparedStatement ps, int i)
					throws SQLException {
				  ps.setInt(1, tempBpplist.get(i).getBId()); 
			      ps.setInt(2, tempBpplist.get(i).getPId()); 
			      ps.setInt(3, tempBpplist.get(i).getS()); 
			      ps.setString(4, tempBpplist.get(i).getDatetime()); 
			      ps.setString(5, tempBpplist.get(i).getMark()); 			     
			      ps.setInt(6, tempBpplist.get(i).getCount());
			} 
	  }); 
	}

 3.批量插入并返回批量id

注:由于JDBCTemplate不支持批量插入后返回批量id,所以此处使用jdbc原生的方法实现此功能

	public List<Integer> addProduct(List<ProductBean> expList) throws SQLException {
		   final List<ProductBean> tempexpList = expList;
		  
		   String sql="insert into product(id,s_id,status,datetime,"
		   		+ " count,o_id,reasons"
		   		+ " values(null,?,?,?,?,?,?)";
		   
		   DbOperation dbOp = new DbOperation();
		   dbOp.init();
		   Connection con = dbOp.getConn();
		   con.setAutoCommit(false);
		   PreparedStatement pstmt = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
	       for (ProductBean n : tempexpList) {
	    	   pstmt.setInt(1,n.getSId()); 	 
	    	   pstmt.setInt(2,n.getStatus()); 
	    	   pstmt.setString(3,n.getDatetime()); 
	    	   pstmt.setInt(4,n.getCount());
	    	   pstmt.setInt(5,n.getOId());
	    	   pstmt.setInt(6,n.getReasons());
	    	   pstmt.addBatch();
		   }
	       pstmt.executeBatch(); 
	       con.commit();   
	       ResultSet rs = pstmt.getGeneratedKeys(); //获取结果
	       List<Integer> list = new ArrayList<Integer>(); 
	       while(rs.next()) {
	           list.add(rs.getInt(1));//取得ID
	       }
	       con.close();
	       pstmt.close();
	       rs.close();
	       
	       return list;
		   
	}

 

以上三组代码直接复制把对应的实体类名一改就可以直接使用在项目中,希望对大家有帮助

分享到:
评论

相关推荐

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

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

    spring jdbc Templatetest 访问mysql数据库,批量插入数据

    在Java开发中,Spring JDBC Template是...在本示例中,我们学习了如何配置Spring JDBC Template,创建数据库连接,以及如何使用它来实现批量插入数据到MySQL数据库。这对于Java开发者来说是一项基础但至关重要的技能。

    spring jdbctemplate实例

    &lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt; ``` 在上述配置中,我们设置了数据源连接参数,然后创建了一个JdbcTemplate实例,将数据源注入到其中。 接下来,我们可以使用...

    使用Spring JDBCTemplate进行增删改查curd操作

    JdbcTemplate还支持批量操作,比如批量插入: ```java public void batchInsert(List&lt;User&gt; users) { List[]&gt; batchArgs = new ArrayList(); for (User user : users) { batchArgs.add(new Object[]{user....

    Spring框架中jdbcTemplate 的使用.doc

    总的来说,Spring的JdbcTemplate是连接数据库的有力工具,它通过模板方法模式封装了常见的数据库操作,简化了开发过程,同时提供了良好的异常处理机制和类型安全的参数绑定,是Spring应用中进行数据库操作的首选组件...

    SpringBoot JdbcTemplate批量操作的示例代码

    SpringBoot JdbcTemplate批量操作是提高数据处理效率的重要手段,尤其在处理大量数据插入或更新时。JdbcTemplate作为Spring框架的一部分,提供了便捷且安全的数据库访问方式,它简化了JDBC的使用,避免了手动管理...

    JdbcTemplate操作数据库实现添加功能

    除了基本的插入操作,`JdbcTemplate`还支持批量插入、查询、更新和删除等操作,同样通过简单的API调用即可完成。其优点在于代码简洁、易于维护,并且由于Spring的异常转换机制,可以将数据库异常转化为易于理解的...

    JavaEE JdbcTemplate的简单示例

    &lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt; &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; ``` 这里我们创建了一...

    JdbcTemplate的事务控制.docx

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

    jdbcTemplate集锦很好的推荐

    - **批量操作**:支持批量插入、更新或删除数据。 - **复杂查询**:对于复杂的查询需求,`jdbcTemplate`提供了灵活的方法来处理。 - **事务管理**:配合Spring的事务管理功能,可以方便地实现数据库操作的原子性。 ...

    spring 整合JDBC 原创代码

    JdbcTemplate是Spring JDBC的核心,它提供了一组方法来执行SQL查询、更新、插入和删除操作。例如,使用`query(String sql, RowMapper&lt;T&gt; rowMapper)`执行查询,`update(String sql, Object... args)`进行更新操作。...

    Spring的MVC Web应用中的持久层技术

    JdbcTemplate作为Spring框架提供的一种轻量级的数据库访问工具,是实现持久层操作的重要手段。本文将深入探讨JdbcTemplate的基本概念、核心功能以及如何在实际项目中使用。 **一、JdbcTemplate简介** JdbcTemplate...

    spring_JdbcTemplete使用详解

    同时,`JdbcTemplate` 的线程安全性使得它可以方便地被多个 DAO 层共享,从而进一步提高了系统的性能和资源利用率。总之,`JdbcTemplate` 是 Spring 应用中进行数据库操作时一个非常值得推荐的选择。

    springBoot使用JdbcTemplate代码实例

    在上面的示例代码中,我们使用 JdbcTemplate 的 batchUpdate 方法来执行批量插入操作。 结论 本文详细介绍了 Spring Boot 使用 JdbcTemplate 代码实例,包括 JdbcTemplate 的简介、在 Spring Boot 项目中的使用、...

    跟我学Spring3(7.5)对JDBC的支持之集成Spr

    6. 批量操作:利用JdbcTemplate的batchUpdate方法进行批量插入、更新操作,提高效率。 总之,Spring 3对JDBC的支持提供了强大而灵活的工具,使得开发者能够专注于业务逻辑,而不是底层的数据库交互细节。通过理解和...

    Spring JDBC 增删改查

    Spring JDBC通过JdbcTemplate和NamedParameterJdbcTemplate两个核心类,简化了传统JDBC的代码,降低了出错的可能性,并提高了可读性和可维护性。这两个模板类提供了事务管理、异常翻译等功能,使得数据库操作更加...

    springj-dbc文档

    此外,通过设置JdbcTemplate的batchUpdate方法,还可以实现批量插入和更新,进一步提升数据库操作的性能。 总结,Spring JDBC提供了丰富的API和工具类,使得数据库操作变得简单且易于管理。通过合理使用...

    spring封装jdbc查询

    5. **异常处理**:Spring将JDBC抛出的SQLException转换为Spring的DataAccessException,使得异常处理更统一,同时也隐藏了底层数据库的实现细节。 6. **批处理**:Spring JDBC支持批处理操作,可以一次执行多个SQL...

    day39-Spring 17-Spring的JDBC模板:完成增删改的操作

    在"Spring 17-Spring的JDBC模板:完成增删改的操作"这一主题中,我们将主要关注如何使用JdbcTemplate进行数据的插入、更新和删除。 首先,JdbcTemplate是Spring JDBC模块的一部分,它提供了一种模板方法模式的实现...

    Spring Batch读取txt文件并写入数据库的方法教程

    总的来说,Spring Batch 提供了一套完整的框架来处理批量数据操作,它的灵活性和模块化设计使得我们可以方便地构建复杂的数据处理流程。在上述示例中,我们仅展示了最基础的用法,但实际应用中可以根据需要扩展更多...

Global site tag (gtag.js) - Google Analytics