`

Spring jdbcTemplate返回插入主键

阅读更多

如题,直接贴代码.

方案一:

int key = 0;
        
        try
        {
            KeyHolder holder = new GeneratedKeyHolder();
            
            this.getJdbcTemplate().update(new PreparedStatementCreator(){

                public PreparedStatement createPreparedStatement(Connection con)
                        throws SQLException
                {
                    int i = 1;
                    PreparedStatement ps = con.prepareStatement(SQLConstant.insertAdvert, Statement.RETURN_GENERATED_KEYS); // 主键字段 new String[]{"ADVERTID"}
                    ps.setString(i++, ad.getName());
                    ps.setString(i++,ad.getDescr()); 
                    ps.setString(i++,ad.getIcon()); 
                    ps.setString(i++,ad.getPicture()); 
                    ps.setString(i++,ad.getUrl()); 
                    ps.setInt(i++,ad.getState()); 
                    ps.setDate(i++,DateUtil.sqlDToutilD(ad.getCreatedate())); 
                    ps.setDate(i++,DateUtil.sqlDToutilD(ad.getEffdate())); 
                    ps.setDate(i++,DateUtil.sqlDToutilD(ad.getExpdate())); 
                    ps.setDate(i++,DateUtil.sqlDToutilD(ad.getLastupdatedate())); 
                    ps.setInt(i++,ad.getUser_id());
                    return ps;
                }
                
            },holder);
            key = holder.getKey().intValue();
            log.debug("insert key is :" + key);
        } catch (DataAccessException e)
        {
            log.error("insert Error!", e);
            throw new ServiceException("insert Error",e);
        }
        return key;

 

方案二:

SimpleJdbcInsert insertActor = 
        	new SimpleJdbcInsert(this.getJdbcTemplate().getDataSource()).withTableName("表名")
        	.usingGeneratedKeyColumns("dirid");
            Map<String, Object> parameters = new HashMap<String, Object>(2);
            parameters.put("NAME", "需要插入的值");
                       Number newId = insertActor.executeAndReturnKey(parameters);
            return newId.intValue();

 使用第二种方式的时候需要spring2.5以上的版本才可以.

分享到:
评论

相关推荐

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

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

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

    在Spring框架中,`jdbcTemplate`是一个非常重要的组件,它为数据库操作提供了便捷且安全的API,降低了SQL注入的风险。本篇文章将详细讲解`jdbcTemplate`的预编译使用,以及如何通过回调方法进行定制化的数据处理。 ...

    jdbc保存对象返回一个主键

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

    JdbcTemplate的事务控制.docx

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

    jdbcTemplate集锦很好的推荐

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

    Spring中文帮助文档

    11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6. 用Java对象来表达JDBC操作 11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4. StoredProcedure类 11.6.5. SqlFunction...

    Spring对JDBC的支持

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

    Spring Jdbc的jar包

    它可以根据数据库表结构自动构建INSERT语句,并且支持返回新生成的主键值,这对于那些具有自动增长主键的表非常有用。 此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,...

    struts+spring+jdbc学生选课系统

    Struts作为MVC框架负责处理请求和视图展示,Spring则通过其jdbcTemplate模块提供数据库操作的支持。 【描述】中提到,此系统没有采用Hibernate作为对象关系映射(ORM)工具,而是选择了Spring的jdbcTemplate。这是...

    spring-jdbc-dao

    3. SimpleJdbcInsert/NamedParameterJdbcInsert:用于简化插入操作,可以自动处理主键生成。 4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC...

    SpringJDBC训练素材.zip

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

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

    - 示例代码中展示了如何定义一个`addUser()`方法,使用JdbcTemplate的`execute()`方法插入用户数据。这里使用了`ConnectionCallback`回调接口,在连接回调中编写SQL语句,并使用`PreparedStatement`设置参数,以...

    spring几种Dao支持配置

    `SimpleJdbcInsert`则简化了插入记录的过程,自动处理生成的主键。 2. **ORM(Object-Relational Mapping)DAO支持:** - **Hibernate**:Spring通过`HibernateTemplate`和`HibernateDaoSupport`为Hibernate提供...

    spring3.10实现jdbc存储deom

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

    springboot集成phoenix+hbase

    为了测试我们的集成,我们可以创建一个Controller来调用Repository的方法,并返回结果: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind....

    Spring数据库访问之异常处理

    例如,如果在执行插入操作时主键冲突,原生的SQLException会被转换为DataIntegrityViolationException,这样我们就可以根据这个异常类型做出相应的业务处理,比如提示用户数据已存在。 除了JdbcTemplate,Spring还...

    Spring.3.x企业应用开发实战(完整版).part2

    11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据 11.2.4 查询数据 11.2.5 查询单值数据 11.2.6 调用存储过程 11.3 BLOB/CLOB类型数据的操作 11.3.1 如何获取本地数据连接 11.3.2 相关的操作接口 11.3.3 插入...

    Spring 连 JDBC

    - SimpleJdbcInsert:简化插入操作,自动生成主键。 - Jdbc呼唤器(CallableStatementCreator)和存储过程调用:用于处理存储过程。 7. **工具类:SqlUtils**: - Spring提供的SqlUtils类包含了一些静态方法,如...

Global site tag (gtag.js) - Google Analytics