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

Spring -JdbcTemplate 小结

2012-07-24 
Spring -JdbcTemplate 总结? Spring-JdbcTemplate 总结1. 查询单个对象:a)????? 基本类型

Spring -JdbcTemplate 总结

? Spring-JdbcTemplate 总结

1. 查询单个对象:

a)????? 基本类型

================================================

下面两个方法主要适用于静态sql

◆???? public Object queryForObject(String sql, RowMapper rowMapper)

◆???? public Object queryForObject(String sql, Class requiredType)

注意:requiredType 只能是基本类型的class,只针对基本类型有效

◆???? public Object queryForObject(String sql, Object[] args, Class requiredType)

◆???? public Object queryForObject(String sql, Object[] args, RowMapper rowMapper)

◆???? public Object queryForObject(String sql, Object[] args, int[] argTypes, Class requiredType)

注:其中argTypes 可以使用java.sql.Types常量类中的常量值

◆???? public Object queryForObject(String sql, Object[] args, int[] argTypes, RowMapper rowMapper)

注: rowMapper是一个回调接口

以下主要用于查询数值对象

◆???? public int queryForInt(String sql, Object[] args)

◆???? public long queryForLong(String sql, Object[] args)

==================================================

下面的方法将返回的各个列封装成map对象,key为列名,value为列值.只能一行数据,不能返回多行数据.

◆???? public Map queryForMap(String sql, Object[] args)

b)????? 引用类型

◆???? public Object queryForObject(String sql, RowMapper rowMapper)

◆???? public Object queryForObject(String sql, Object[] args, RowMapper rowMapper)

◆???? public Map queryForMap(String sql, Object[] args)

2. 查询多个对象

a)????? 基本类型:

◆???? public List queryForList(String sql, Object[] args)

注:返回的list的每个元素都是一个map对象,该map对象封装了一行数据且只有一行数据,包括要查询的列字段

b)????? 引用类型:???

◆???? public List queryForList(String sql, Object[] args)

??????? Iterator iter =? this.jdbcTemplate.queryForList(sql,new Object[]{}).iterator();

??????? List list = new ArrayList();

??????? while(iter.hasNext()){

??????????? User user = new User();

??????????? Map map = (Map) iter.next();

??????????? Set<Entry<String, String>> set = map.entrySet();

??????????? Iterator<Entry<String, String>> iter2 = set.iterator();

??????????? Entry<String, String> entry = iter2.next();

??????????? user.setUsername(entry.getValue());

??????????? entry = iter2.next();

??????????? user.setPassword(entry.getValue());

??????????? list.add(user);

?????? }

◆???? public List query(String sql, Object[] args, RowMapper rowMapper)

注:返回的list 中的元素可以是引用类型的对象.

◆???? ??public Object execute(ConnectionCallback action)

注:使用回调接口.将各个字段值封装成引用类型的对象,然后以list方式返回.

3. ?修改操作.适用于增、删、改

◆???? public int update(String sql, Object[] args)

4.? 批处理

?String sql = "insert into user(username,password) values(?,?)";

?????? final List list = new ArrayList();

?????? for(int i = 0;i < 5 ; i++){

?????????? User user = new User();

?????????? user.setPassword("dog" + i);

?????????? user.setUsername("dog" + i);

?????????? list.add(user);

?????? }

?????? int [] rst = this.jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){

?????????? public int getBatchSize() {

????????????? return list.size();

?????????? }

?????????? public void setValues(PreparedStatement ps, int i)

????????????????? throws SQLException {

????????????? User user = (User) list.get(i);

????????????? ps.setString(1, user.getUsername());

????????????? ps.setString(2, user.getPassword());

?????????? }

????? });

热点排行