首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

应用spring的jdbcTemplate-使用具名参数

2012-09-19 
使用spring的jdbcTemplate-----使用具名参数在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限制,定

使用spring的jdbcTemplate-----使用具名参数

在JDBC用法中,SQL参数是用占位符?表示,并且受到位置的限制,定位参数的问题在于,一旦参数的位置发生变化,必须改变

参数的绑定,在Spring JDBC中,绑定SQL参数的另一种选择是使用具名参数,SQL具名参数是按照名称绑定,而不是位置绑定,

具名参数只在SImpleJdbcTemplate和NamedParameterJdbcTemplate中得到支持.

?

实现方法

?

public class JdbcUserDao extends SimpleJdbcDaoSupport implements UserDao{public void insert(User user){String sql="insert into user values (:username,:password)";Map<String,Object> pramters = new Map<String,Object>();pramters.put("username",user.getUsername());pramters.put("password",user.getPassword());this.getSimpleJdbcTemplate().update(sql,pramters);}}

?

?

?

也可以提供一个SQL参数源,它将为具体参数提供SQL参数值,SQLParamterSource接口有俩个实现,其实的基本实现就是MapSqlParamterSource,它将Map包装起来作为参数源。

public class JdbcUserDao extends SimpleJdbcDaoSupport implements UserDao{public void insert(User user){String sql = "insert into user values(:username,:password)";Map<String,Object> paramters = new Map<String,Object>();paramters.put("username",user.getUsername());paramters.put("password",user.getPassword());SqlParamterSource source= new MapSqlParamterSource(paramters);this.getSimpleJdbcTemplate().update(sql,source);}}

?

?

SqlParamterSource的另一个实现是BeanPropertySqlParamterSource,它将普通的java对象包装起来作为SQL参数源,对于每个具名参数,会用同名的属性作为参数值

public class JdbcUserDao extends SimpleJdbcDaoSupport implements UserDao{public void insert(User user){String sql ="insert into user values(:username,:password)";SqlParamterSource parameterSource = new BeanPropertySqlParamterSource(user);this.getSimpleJdbcTempalte().update(sql,paramterSource);}}

?

?

具名参数也可以用在批量更新中,可以给参数值提供一个Map数组或SqlParamterSource数组,

public class JdbcUserDao extends SimpleJdbcDaoSupport implements UserDao{public void insertBetch(List<User> user){String sql = "insert into user values(:username,:password)";List<SqlParamterSource> paramters = new ArrayList<SqlParamterSource()>();for(User u:user){paramters.add(new BeanPropertySqlParamterSource(u));}this.getSimpleJdbcTemplate().batchUpdate(sql,paramters.toArray(new SqlParamterSource[0]));}}

?

热点排行