`

使用JdbcTemplate取得插入Oracle记录的主键值

 
阅读更多

以下内容都是引自网上其他的说法,下面的说法很容易误导人的,要获得主键,首先应该先把主键能插入,显然代码里面有显示插入主键的值,初步判断是利用了触发器,插入数据时,将事先建好的序列插入进去,关于如何利用序列插入则很简单的,再次不多说了。
所以我说明下:如果创建了触发器处理了,以下方法都没有问题。如果没有,则必须利用序列显式插入主键的值,
使用JdbcTemplate取得插入Oracle记录的主键值 在使用spring的过程中经常遇到获取插入数据的主键值,在使用jdbc时我们可能已经会使用了,但是在spring的jdbcTemplate中也有相关的方法:

第一种方法:

public int getKey1(User user){

int i = 0;

final String name = user.getUserName();

final String password = user.getPassword();

final int age = user.getAge();

KeyHolder keyHolder = new GeneratedKeyHolder();

final String sql = "insert into tb_user(user_name,password,age) values(?,?,?)";

jdbcTemplate.update(new PreparedStatementCreator(){



public PreparedStatement createPreparedStatement(Connection conn)

throws SQLException {

PreparedStatement ps = conn.prepareStatement(sql,new String[]{"user_id"});

ps.setString(1, name);

ps.setString(2, password);

ps.setInt(3, age);

return ps;

}

}, keyHolder);

i = keyHolder.getKey().intValue();

return i;

}



第二种方法:


public int getKey2(User user){

//这里withTableName("tb_user")面是 表名,usingGeneratedKeyColumns("user_id")表字段主键

SimpleJdbcInsert insertActor =  new SimpleJdbcInsert(jdbcTemplate.getDataSource()).withTableName("tb_user").usingGeneratedKeyColumns("user_id");

Map<String, Object> parameters = new HashMap<String, Object>(); 

        parameters.put("user_name", user.getUserName());

        parameters.put("password", user.getPassword());

        parameters.put("age", user.getAge());

        Number newId = insertActor.executeAndReturnKey(parameters);

return newId.intValue();

}
分享到:
评论

相关推荐

    使用Spring的JdbcTemplate调用Oracle的存储过程

    使用Spring的JdbcTemplate调用Oracle的存储过程

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...

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

    接下来,让我们看看如何使用`jdbcTemplate`进行预编译的插入操作。`update()`方法可以用来执行更新操作,同样支持预编译参数: ```java String sql = "INSERT INTO table (name, age) VALUES (?, ?)"; int rows...

    SpringMvc+JdbcTemplate+oracle的小项目实例

    在本项目实例中,我们探讨的是如何利用SpringMVC、JdbcTemplate和Oracle数据库来构建一个小型的Java应用程序,主要涉及用户注册与登录的功能。这个项目对于初学者来说是一个很好的实践平台,因为它涵盖了Web开发中的...

    spring框架 jdbcTemplate

    使用JdbcTemplate的query()方法执行SQL查询,通常配合RowMapper或ResultSetExtractor将结果集转换为Java对象。例如,我们可以定义一个SQL查询,然后传入参数,JdbcTemplate会自动处理预编译和参数绑定。 4. **删除...

    Oracle + jdbcTemplate + Spring + Java + Flex 实现分页

    ### Oracle + jdbcTemplate + Spring + Java + Flex 实现分页 #### 一、Oracle存储过程分页 在Oracle数据库中,为了实现高效的分页查询,通常会采用存储过程的方式来完成。这种方式能够有效地减少网络传输的数据量...

    JdbcTemplate的批量方法使用

    在这个场景中,我们将详细探讨如何使用`JdbcTemplate`进行批量插入和删除操作。 批量插入操作在数据库处理大量数据时非常常见,它可以显著提高性能,因为数据库通常会优化批量处理,而不是单独处理每一项。在提供的...

    使用Spring的JdbcTemplate实现分页功能

    使用Spring的JdbcTemplate实现分页功能

    简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作

    在本文中,我们将深入探讨如何使用Spring Boot集成JdbcTemplate与MySQL数据库进行数据操作。Spring Boot以其简化配置和快速启动的特点,已经成为Java开发者的首选框架。而JdbcTemplate是Spring框架的一部分,它提供...

    jdbcTemplate分页彻底解决,使用游标滚动

    总结起来,使用JdbcTemplate的游标滚动技术,我们可以实现高效、低内存消耗的分页,这对于处理大量数据的系统来说至关重要。同时,这种方式也使得代码更加灵活,能够适应各种数据库的差异,提高了程序的可移植性。

    springBoot使用JdbcTemplate代码实例

    在上面的示例代码中,我们使用 JdbcTemplate 的 update 方法来执行插入操作,并使用 KeyHolder 来获取插入记录的主键值。 批量操作 JdbcTemplate 也提供了批量操作的支持,例如: ``` public void createUserList...

    SpringJdbcTemplate封装工具类

    例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...

    jdbcTemplate需要用到的jar包.zip

    4. **调用JdbcTemplate方法**:使用`JdbcTemplate`提供的方法执行SQL,例如`query()`执行查询,`update()`执行插入、更新或删除。 5. **处理结果**:对于查询操作,`JdbcTemplate`会返回一个结果集,你可以通过`...

    Spring boot连接oracle数据库JDBC配置步骤

    在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,需要在 `build.gradle` 文件中添加 Oracle JDBC ...

    9. 使用JdbcTemplate【从零开始学Spring Boot】

    总结来说,本节主要介绍了如何在Spring Boot项目中使用JdbcTemplate进行数据库操作,包括设置依赖、配置数据源、注入JdbcTemplate以及执行SQL查询、更新、插入和删除操作。了解并掌握这些基本操作,将有助于我们在...

    JdbcTemplate使用.doc

    首先,要使用`JdbcTemplate`,我们需要添加Spring的支持。这通常意味着在项目中引入Spring的相关库,比如`spring-jdbc.jar`,并且在项目配置中声明Spring的依赖管理。这可以通过Maven或Gradle等构建工具完成。 接...

Global site tag (gtag.js) - Google Analytics