JdbcTemplate总结

该类用来轻量级包装JDBC!以后需要连接数据库时,使用本类即可!你不需要再使用Connection、PreparedStatement,以及ResultSet等东西了!

即对数据库做CRUD时,使用本类即可!

 

一、更新操作(7)

public int update(String sql)

比较少用!

public int update(String sql, final Object[] params)

执行sql语句,sql中的“?”使用params中给定的值来替换!sql中有几个“?”,params中就应该有几个值。其中sql只能是insert、update,或delete语句!

 

public int update(String sql,PreparedStatementSetter pss)

PreparedStatementSetter接口只有一个方法:setValues(PreparedStatement)。这个接口让我们自己来设置sql语句中的“?”!我们还可以在setValues()方法中调用PreparedStatement类的非设置“?”的方法!

本方法不是太常用,只用你需要自己来设置PreparedStatement时再使用本方法,通常可以使用上面的方法!

 

public int update(final String sql, final Object[] params, final KeyHolder keyHolder)

本方法是用来执行insert语句的,并且对应的数据库表必须设置了自增长!其中keyHolder对象是用来获取自增长值的。

 

public intupdate(PreparedStatementCreator psc)

 

public intupdate(PreparedStatementCreator psc, KeyHolder keyHolder)

 

public int update(PreparedStatementCreatorpsc, PreparedStatementSetter pss)

其中PreparedStatementCreator只有一个方法:PreparedStatementcreatePreparedStatement(Connection)!该方法让我们自己来创建PreparedStatement。这个方法不是很常用!当我们需要自己来创建特殊的PreparedStatement时,才需要使用它!

只有你对第二个方法不满意时,你才需要使用本章的其它方法!

 

二、单行单列查询(6)

public int queryForInt(Stringsql)

其中sql必须是单行、单列的查询语句,并且它不能有“?”,再并且查询结果需要是int类型。

 

public int queryForInt(Stringsql, Object[] params)

 

public long queryForLong(Stringsql)

 

public long queryForLong(Stringsql, Object[] params)

 

public Object queryForObject(String sql)

 

public Object queryForObject(String sql, Object[]params)

 

 

三、单行查询(4)

public Map queryForMap(String sql)

 

public Map queryForMap(String sql, Object[] params)

返回的Map中,key是表的字段名,value是当前字段对应的值。就算查询语句的结果集有多条记录,但该方法只把第一行的记录映射成Map。

 

public List queryForList(String sql) {

    return newArrayList(queryForMap(sql).values);

}

 

public List queryForList(String sql, Object[]params)

 本方法是把queryForMap()返回的Map对象,通过调用values后得到的Collection处理后的List。

 

四、查询(10)

public Object query(String sql, ResultSetExtractorrse)

其中ResultSetExtractor接口只有一个方法:Object extractData(ResultSet rs),该方法需要把结果集转换成一个对象。你可以通过这个方法把结果集转换成任何类型的对象,例如可以把结果集转换成一个List。这个方法只会被调用一次!!!这个方法的返回值就是query()方法的返回值!

extractData()把结果集映射的工作交给了你!而其他工作,你无需操心!

extractData()方法只会被调用一次,你需要在这个方法中把整个(多行多列)结果集映射成一个对象。也就是说,这一个对象应该可以表示一个结果集!例如返回值为List<Student>类型!

 

public Object query(String sql,Object[]params,  ResultSetExtractor rse)

 

public void query(String sql,RowCallbackHandler rch)

 

public void query(String sql,Object[] params,  RowCallbackHandler rch)

其中RowCallbackHandler只有一个方法:voidprocessRow(ResultSet rs)。processRow()会被调用多次,也就是说,结果集有几行,processRow()就会被调用几次。这个方法中我们需要把一行记录映射一下,但这个方法没有返回值,映射的结果也就不能返回,你需要自己来处理结果保存。

 

public List query(String sql, RowMapper rowMapper)

 

public List query(String sql, Object[] params,RowMapper rowMapper)

 

public Object query(PreparedStatementCreator psc,PreparedStatementSetter pss, ResultSetExtractor rse)

 

public Object query(PreparedStatementCreator psc,ResultSetExtractor rse)

 

public voidquery(PreparedStatementCreator psc, RowCallbackHandler rch)

 

public List query(PreparedStatementCreator psc,RowMapper rowMapper)

 

五、批处理(1)

public int[] batchUpdate(Stringsql, Object[][] params)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值