public void save(String tableName,HashMap<String,Object> param) throws Exception{
//注意 param中的key必须与数据库中的列表相对应
//如果主键不存在则从序列中生成一个新的id
SimpleJdbcInsert jdbcInsert=new SimpleJdbcInsert(this.getDataSource()).withTableName(tableName);
try {
String primary_key=(String) param.get("primary_key");
//如果主键不存在
if(!StringUtils.isBlank(primary_key)){
String seq_name=(String) param.get("seq_name");
String selSql="select "+seq_name+".nextval from dual";
int primaryvalue=getJdbcTemplate().queryForInt(selSql);
param.put(primary_key, primary_value);
}
param.remove("primary_key");
param.remove("seq_name");
List list=new ArrayList();
Iterator entries = param.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
String columnName = (String) entry.getKey();
list.add(columnName.toLowerCase());
}
// String[] array = (String[])list.toArray(); 抛出java.lang.ClassCastException
// 原因是java中的强制类型转换只是针对单个对象的,
// 将整个数组转换成另外一种类型的数组是不行的。
//new String[0]实际上是告诉系统list中是String类型的数据,数组无所谓,不必与list.size()相同
String[] columnNames = (String[])list.toArray(new String[0]);
jdbcInsert.usingColumns(columnNames).execute(param);
} catch (Exception e) {
e.printStackTrace();
logger.info("JdbcService save table:("+tableName+")param("+param+") error:"+e.getMessage());
throw new Exception(tableName+"的"+e.getCause().getMessage());
}
}
分享到:
相关推荐
Springs SimpleJdbcInsert类的用法。 演示H2 InMemory DB对Spring的SimpleJdbcInsert类的用法。 #技术堆栈。 Spring JDBC。 H2 InMemory数据库。 Lombok。 Gradle。 #PreRequires。 JDK 1.7以上。 Gradle( ) ...
本文将深入探讨Spring JDBC的核心概念,包括JdbcTemplate、SimpleJdbcInsert、SimpleJdbcCall等关键组件,以及它们在实际开发中的应用。 一、JdbcTemplate详解 JdbcTemplate是Spring JDBC的核心,它提供了一种模板...
private SimpleJdbcInsert simpleJdbcInsert; public void addUser(User user) { Map, Object> params = new HashMap(); params.put("name", user.getName()); // ... 其他参数 simpleJdbcInsert....
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource) .withTableName("table_name") .usingGeneratedKeyColumns("id"); Number key = insert.execute(new MapSqlParameterSource(params)); ``` 这段...
`SimpleJdbcInsert`可以根据表结构自动生成INSERT语句,而`SimpleJdbcCall`则可以方便地调用数据库中的存储过程,极大地减少了编码量。 为了与Oracle数据库进行交互,本包内可能包含了以下Oracle相关的JAR文件: 1...
SimpleJdbcInsert insert = new SimpleJdbcInsert(dataSource) .withTableName("users") .usingGeneratedKeyColumns("id"); Map, Object> params = new HashMap(); params.put("username", "testUser"); ...
Spring JDBC模块则提供了简化数据库操作的工具,如`JdbcTemplate`和`SimpleJdbcInsert`,它们封装了SQL执行和结果处理,降低了数据库访问的复杂性。在源码中,可以看到Spring如何通过模板方法设计模式来实现数据库...
另外,`SimpleJdbcInsert`和`SimpleJdbcCall`是两个辅助类,分别简化了插入记录和调用存储过程的操作。`SimpleJdbcInsert`允许用户只需提供表名,然后通过设置参数即可执行插入操作。而`SimpleJdbcCall`则可以方便地...
`SimpleJdbcInsert`简化了插入数据的过程,允许我们基于表结构动态构造INSERT语句,而`SimpleJdbcCall`则用于执行存储过程,使得调用数据库中的自定义函数或过程变得简单。 在事务管理方面,Spring JDBC提供了`...
spring-jdbc.jar包含了Spring对JDBC的抽象层,包括JdbcTemplate类和SimpleJdbcInsert、SimpleJdbcCall等工具类。JdbcTemplate提供了一套模板化的API,用于执行SQL查询、更新、存储过程等操作,同时自动处理结果集、...
"jar对应关系.txt"文件很可能详细列出了这些依赖,可能包括`spring-context`、`spring-jdbc`、`spring-tx`等。`spring-context`提供核心容器功能,`spring-jdbc`包含了JDBC支持,而`spring-tx`则处理事务管理。确保...
`SimpleJdbcInsert`允许你设置表名和列名,然后自动构建插入语句,而`SimpleJdbcCall`则可以方便地调用数据库中的存储过程,自动处理输入参数和输出结果。 在事务管理方面,Spring JDBC提供了`...
SimpleJdbcInsert适用于列名固定的插入操作,而NamedParameterJdbcInsert则允许使用参数名,更易于理解和维护。 3. **RowCallbackHandler/ResultSetExtractor**: 这两个接口用于处理查询结果。RowCallbackHandler...
通过`JdbcTemplate`和`SimpleJdbcInsert`等类,可以方便地执行SQL查询和更新操作。 2. **Spring Data JPA**: Spring Data JPA是Spring对Java Persistence API(JPA)的扩展,使得开发者能够快速实现基于JPA的数据...
首先,要了解Spring JDBC的基本架构,包括DataSource、JdbcTemplate、SimpleJdbcInsert、SimpleJdbcCall等关键组件。DataSource是Java中用于获取数据库连接的接口,Spring提供了对多种DataSource实现的支持,如...
SimpleJdbcInsert可以自动计算生成主键值,而SimpleJdbcCall则允许开发者方便地定义和执行数据库的存储过程。 3. **RowMapper** 和 **ResultSetExtractor**:这两个接口用于将数据库查询的结果映射到Java对象。...
首先,`spring-jdbc-3.2.0.RELEASE.jar` 包含了Spring JDBC的主要类和接口,如`JdbcTemplate`和`SimpleJdbcInsert`等。`JdbcTemplate`是Spring JDBC的核心,它提供了一种模板方法模式来执行常见的JDBC操作,如查询、...
SimpleJdbcInsert用于简化插入操作,只需提供表名,Spring会自动构建INSERT语句,避免了手动拼接SQL的繁琐。而SimpleJdbcCall则用于调用存储过程,它可以自动映射结果集,使得调用存储过程如同调用方法一样简单。 ...
它需要JDK 5或更高版本,并且能与SimpleJdbcInsert和SimpleJdbcCall配合使用。 4. **SimpleJdbcInsert 和 SimpleJdbcCall**: 这两个类利用了数据库元数据,简化了插入操作和调用存储过程的过程。只需要提供表名或...