SimpleJdbcTemplate类也是基于JdbcTemplate类,但利用Java5+的可变参数列表和自动装箱和拆箱从而获取更简洁的代码。
SimpleJdbcTemplate主要提供两类方法:query及queryForXXX方法、update及batchUpdate方法。
首先让我们看个例子吧:
- //定义UserModel的RowMapper
- package cn.javass.spring.chapter7;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.springframework.jdbc.core.RowMapper;
- public class UserRowMapper implements RowMapper<UserModel> {
- @Override
- public UserModel mapRow(ResultSet rs, int rowNum) throws SQLException {
- UserModel model = new UserModel();
- model.setId(rs.getInt("id"));
- model.setMyName(rs.getString("name"));
- return model;
- }
- }
- @Test
- public void testSimpleJdbcTemplate() {
- //还支持DataSource和NamedParameterJdbcTemplate作为构造器参数
- SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
- String insertSql = "insert into test(id, name) values(?, ?)";
- simpleJdbcTemplate.update(insertSql, 10, "name5");
- String selectSql = "select * from test where id=? and name=?";
- List<Map<String, Object>> result = simpleJdbcTemplate.queryForList(selectSql, 10, "name5");
- Assert.assertEquals(1, result.size());
- RowMapper<UserModel> mapper = new UserRowMapper();
- List<UserModel> result2 = simpleJdbcTemplate.query(selectSql, mapper, 10, "name5");
- Assert.assertEquals(1, result2.size());
- }
1)SimpleJdbcTemplate初始化:可以使用DataSource、JdbcTemplate或NamedParameterJdbcTemplate对象作为构造器参数初始化;
2)update(insertSql, 10, "name5"):采用Java5+可变参数列表从而代替new Object[]{10, "name5"}方式;
3)query(selectSql, mapper, 10, "name5"):使用Java5+可变参数列表及RowMapper回调并利用泛型特性来指定返回值类型(List<UserModel>)。
SimpleJdbcTemplate类还支持命名参数特性,如queryForList(String sql, SqlParameterSource args)和queryForList(String sql, Map<String, ?> args) ,类似于NamedParameterJdbcTemplate中使用,在此就不介绍了。
注:SimpleJdbcTemplate还提供类似于ParameterizedRowMapper 用于泛型特性的支持,ParameterizedRowMapper是RowMapper的子类,但从Spring 3.0由于允许环境需要Java5+,因此不再需要ParameterizedRowMapper ,而可以直接使用RowMapper;
query(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
query(String sql, RowMapper<T> rm, Object... args) //直接使用该语句
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
SimpleJdbcTemplate还提供如下方法用于获取JdbcTemplate和NamedParameterJdbcTemplate:
1)获取JdbcTemplate对象方法:JdbcOperations是JdbcTemplate的接口
JdbcOperations getJdbcOperations()
2)获取NamedParameterJdbcTemplate对象方法:NamedParameterJdbcOperations是NamedParameterJdbcTemplate的接口
NamedParameterJdbcOperations getNamedParameterJdbcOperations()
更多关系Spring的信息