zoukankan      html  css  js  c++  java
  • Spring Named Parameters examples in SimpleJdbcTemplate

    In JdbcTemplate, SQL parameters are represented by a special placeholder “?” symbol and bind it by position. The problem is whenever the order of parameter is changed, you have to change the parameters bindings as well, it’s error prone and cumbersome to maintain it.

    To fix it, you can use “Named Parameter“, whereas SQL parameters are defined by a starting colon follow by a name, rather than by position. In additional, the named parameters are only support in SimpleJdbcTemplate and NamedParameterJdbcTemplate.

    See following three examples to use named parameters in Spring.

    Example 1

    Example to show you how to use named parameters in a single insert statement.

    	//insert with named parameter
    	public void insertNamedParameter(Customer customer){
    			
    		String sql = "INSERT INTO CUSTOMER " +
    			"(CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)";
    			
    		Map<String, Object> parameters = new HashMap<String, Object>();
    		parameters.put("custId", customer.getCustId());
    		parameters.put("name", customer.getName());
    		parameters.put("age", customer.getAge());
    			
    		getSimpleJdbcTemplate().update(sql, parameters);
    				
    	}
    

    Example 2

    Examples to show how to use named parameters in a batch operation statement.

    	public void insertBatchNamedParameter(final List<Customer> customers){
    			
    		String sql = "INSERT INTO CUSTOMER " +
    		"(CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)";
    				
    		List<SqlParameterSource> parameters = new ArrayList<SqlParameterSource>();
    		for (Customer cust : customers) {
    			parameters.add(new BeanPropertySqlParameterSource(cust)); 
    		}
    		
    		getSimpleJdbcTemplate().batchUpdate(sql,
    			parameters.toArray(new SqlParameterSource[0]));
    	}
    

    Example 3

    Another examples to use named parameters in a batch operation statement.

    	public void insertBatchNamedParameter2(final List<Customer> customers){
    			
    	   SqlParameterSource[] params = 
    		SqlParameterSourceUtils.createBatch(customers.toArray());
    		
    	   getSimpleJdbcTemplate().batchUpdate(
    		"INSERT INTO CUSTOMER (CUST_ID, NAME, AGE) VALUES (:custId, :name, :age)",
    		params);
    		
    	}
    
  • 相关阅读:
    进程和线程
    vue程序搭建
    EXTJS 不显示窗体 标题框的办法
    asp.net 本地资源连接没反映的解决办法
    IIS支持flv格式流传送的办法(解决flash播放器报200错误)
    response.write不要放到try里去,不然会报一个错误 a instance object什么的
    Webservice 用http get方式无法请求到的解决办法
    转一篇关于RIA的内存泄露的文章
    jquery的选择器$('')在IE6下对JS动态生成(比如ajax生成的)的元素失效的解决办法
    聚类存储过程分析
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4752470.html
Copyright © 2011-2022 走看看