如题,直接贴代码.
方案一:
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技术网站
在Spring框架中,`jdbcTemplate`是一个非常重要的组件,它为数据库操作提供了便捷且安全的API,降低了SQL注入的风险。本篇文章将详细讲解`jdbcTemplate`的预编译使用,以及如何通过回调方法进行定制化的数据处理。 ...
3. **JdbcTemplate**:Spring框架中的一个类,用于简化JDBC的使用,提供了一组方便的方法来处理数据库操作。 #### 三、代码解析 假设我们有一个`MessageText`对象,需要将其保存到数据库,并希望在保存后能够获取...
然而,单纯使用`JdbcTemplate`进行数据库操作时,并不能自动管理事务,因此我们需要了解如何通过`JdbcTemplate`结合Spring框架来实现事务控制。 #### 二、原生 JDBC 的事务控制 在没有使用任何框架的情况下,我们...
`jdbcTemplate`是Spring框架中的一个核心组件,主要用于简化对数据库的操作。它提供了一系列的API来帮助开发者执行SQL语句,处理结果集等,使得操作数据库变得更加简单且安全。 在实际应用中,`jdbcTemplate`通常...
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...
在这个例子中,`SimpleJdbcInsert`类被用来简化插入操作,而`executeAndReturnKey()`方法执行插入并返回新生成的主键。 3. **使用JdbcTemplate进行数据库查询** 查询操作可以使用`query()`方法完成,它可以接受...
它可以根据数据库表结构自动构建INSERT语句,并且支持返回新生成的主键值,这对于那些具有自动增长主键的表非常有用。 此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,...
Struts作为MVC框架负责处理请求和视图展示,Spring则通过其jdbcTemplate模块提供数据库操作的支持。 【描述】中提到,此系统没有采用Hibernate作为对象关系映射(ORM)工具,而是选择了Spring的jdbcTemplate。这是...
3. SimpleJdbcInsert/NamedParameterJdbcInsert:用于简化插入操作,可以自动处理主键生成。 4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC...
对于插入操作,Spring JDBC提供了SimpleJdbcInsert类,它可以自动生成INSERT语句并处理主键自增的问题。对于存储过程的调用,SimpleJdbcCall则扮演了关键角色,它可以方便地包装和执行数据库的存储过程。 在实际...
- 示例代码中展示了如何定义一个`addUser()`方法,使用JdbcTemplate的`execute()`方法插入用户数据。这里使用了`ConnectionCallback`回调接口,在连接回调中编写SQL语句,并使用`PreparedStatement`设置参数,以...
`SimpleJdbcInsert`则简化了插入记录的过程,自动处理生成的主键。 2. **ORM(Object-Relational Mapping)DAO支持:** - **Hibernate**:Spring通过`HibernateTemplate`和`HibernateDaoSupport`为Hibernate提供...
`SimpleJdbcInsert`则用于简化插入操作,自动处理主键生成等问题。 在开始项目之前,必须确保正确配置Spring的jar包依赖。"jar对应关系.txt"文件很可能详细列出了这些依赖,可能包括`spring-context`、`spring-jdbc...
为了测试我们的集成,我们可以创建一个Controller来调用Repository的方法,并返回结果: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind....
例如,如果在执行插入操作时主键冲突,原生的SQLException会被转换为DataIntegrityViolationException,这样我们就可以根据这个异常类型做出相应的业务处理,比如提示用户数据已存在。 除了JdbcTemplate,Spring还...
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 插入...
- SimpleJdbcInsert:简化插入操作,自动生成主键。 - Jdbc呼唤器(CallableStatementCreator)和存储过程调用:用于处理存储过程。 7. **工具类:SqlUtils**: - Spring提供的SqlUtils类包含了一些静态方法,如...