jdbcTemplate常用方法及小例子

查询

Ø queryForObject

//关于 jdbcTemplatequeryForObject方法。下面我们就一一解析一下:

spring 3.2.2 版本之后jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong() 就取消了,全部用queryForObject代替了,这里就不详解了。 

 

Ø queryForObject(sql, requiredType)

本质上和queryForInt相同,只是可以返回不同的对象,例如返回一个String对象

2个参数,1、sql      2、返回来的对象class

String sql ="select count(*) from user";

Integer num =jdbcTemplate.queryForObject(sql, Integer.class);

 

这里不能直接映射为一个实体类,如

User user = jdbcTemplate.queryForObject(sql,User.class);

运行时会报错。

如果想映射为具体的实体,可以使用ORM框架,或者后面介绍的方法。

 

Ø queryForObject(sql, requiredType,args...)

第三个参数是个可变参数

String sql = "select count(*) fromuser where ID<? AND ID>?";

jdbcTemplate.queryForObject(sql,Integer.class,4,2 );

 

 Ø  queryForObject(sql, args[],requiredType)

第二个参数是个参数数组

jdbcTemplate.queryForObject(sql,newInteger[]{5,1}, Integer.class)

也可以使用不同类型的参数

String sql = "select count(*) fromuser where ID>? AND USER_NAME LIKE ?";

jdbcTemplate.queryForObject(sql, newObject[]{1,"%哈%"},Integer.class);

 

Ø  queryForObject(sql, rowMapper)

注意,这里查询必须保证只能查询一条数据,否则会报错。

String sql = "select * from user WHEREID = 1";

User user = jdbcTemplate.queryForObject(sql,new RowMapper<User>(){

@Override

        publicUser mapRow(ResultSet rs, int rowNum) throws SQLException {

                 Useruser = new User();

                 user.setId(rs.getInt("ID"));

                 user.setUserName(rs.getString("USER_NAME"));

                 returnuser;

        }

});

 

传参也是跟上面相同,两种方法。

 

 

Ø  queryForList  

返回一个装有map的list,每一个map是一条记录,map里面的key是字段名   

List<Map<String, Object>> rows= jdbcTemplate.queryForList("SELECT * FROM user"); 

//得到装有map的list   

for(int i=0;i<rows.size();i++){     //遍历   

Map userMap=rows.get(i);   

System.out.println(userMap.get("id"));     

System.out.println(userMap.get("name"));     

System.out.println(userMap.get("age"));   

}   

传参同上。

 

Ø  queryForMap 

//这个查询只能是查询一条记录的查询,返回一个map,key的值是column的值   

Map<String, Object> map =jdbcTemplate.queryForMap("select * from user");   

map.get("name ");

     

Ø  queryForRowSet  

//返回一个结果集然后调用.getString或者getInt等去取值   

   

Ø  query方法就不详解了,不常用,有queryForXXX方法基本够用。

 

 

更新

Ø execute

执行sql语句,无返回执,用于更新操作(增、删、改) 

jdbcTemplate.execute(sql); 

 

Ø update

更新操作,返回受影响的行数 

Int rowNum = jdbcTemplate.update(sql); 

Ø  batchUpdate

执行批量更新,参数为string数组 

String[] sql = new String[2];

        sql[0]= "";

        sql[1]= "";

jdbcTemplate.batchUpdate(sql); 

//更新,args为对象数组 

jdbcTemplate.update(sql, args[]); 

 

/*

说明:  

JDBCTemplate的使用方法:  

ApplicationContext.xml中定义一个jdbcTemplate的节点,使用POJO注入,获得注入后可以执行操作  

不需要继承什么基类  

*/   

<beanid="jdbcTemplate"   

class="org.springframework.jdbc.core.JdbcTemplate">               

      <property name="dataSource"ref="dataSource"/>            

</bean>       

/*

jdbcTemplate有很多的ORM化回调操作将返回结果转为对象列表,  

但很多时候还是需要返回ResultSetSpring有提供一个类似ResultSet的,实现JDBC3.0RowSet接口的SpringSqlRowSet  

注意  

jdbcTemplate尽量只执行查询操作,莫要进行更新,否则会破坏Hibernate的二级缓存体系 

*/  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值