`
yunzhongxia
  • 浏览: 639939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SimpleJdbcInsert列的过滤

 
阅读更多
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());
		}
	}

 

分享到:
评论

相关推荐

    SpringSimpleJdbcInsertExample:通过H2 InMemory DB演示Spring的SimpleJDBCInsert类功能

    Springs SimpleJdbcInsert类的用法。 演示H2 InMemory DB对Spring的SimpleJdbcInsert类的用法。 #技术堆栈。 Spring JDBC。 H2 InMemory数据库。 Lombok。 Gradle。 #PreRequires。 JDK 1.7以上。 Gradle( ) ...

    Spring中文帮助文档

    3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 ...

    Spring API

    3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 ...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

Global site tag (gtag.js) - Google Analytics