jdbctemplate主要使用的方法:
1.execute方法:用于执行任何SQL语句,一般用于执行DDL语句,例如:
jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object [] {name, id});
在使用query语句进行查询时,有几种回调方式,其中用的最多的是结果集处理回调,通过回调处理Resultset或将 ResultSet转换为需要的形式:
RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。例如:
jdbcTemplate.query(listSql, new RowMapper<Map>() {
@Override
public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
return row;
jdbcTemplate.query(listSql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
result.add(row);
jdbcTemplate.query(listSql, new ResultSetExtractor<List>() {
@Override
public List extractData(ResultSet rs) throws SQLException, DataAccessException {
List result = new ArrayList();
while(rs.next()) {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
result.add(row);
}
return result;
NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,可以使用DataSource或JdbcTemplate 对象作为构造器参数初始化,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。 在jdbctemplate中的sql语句中参数一般用?占位符,而在NamedParameterJdbcTemplate使用(:参数名)表示需要传递的参数,通过一个Map或SqlParameterSource 的方式将参数传递给NamedParameterJdbcTemplate.用map的所有参数的值都必须要放到map中去,其中的key为:后面的名称,value是你传的值 SqlParameterSource的好处是不用一个个的赋值,但是:x中的x的值必须和对象的属性名称一样
1.execute方法:用于执行任何SQL语句,一般用于执行DDL语句,例如:
jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100)) ");
jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object [] {name, id});
使用KeyHolder keyholder=new GeneratedKeyHolder(); jdbcTemplate.update(sql, ps,keyholder);这个参数可以获得主键生成值 。
在使用query语句进行查询时,有几种回调方式,其中用的最多的是结果集处理回调,通过回调处理Resultset或将 ResultSet转换为需要的形式:
RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。例如:
jdbcTemplate.query(listSql, new RowMapper<Map>() {
@Override
public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
return row;
}});
jdbcTemplate.query(listSql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
result.add(row);
}});
jdbcTemplate.query(listSql, new ResultSetExtractor<List>() {
@Override
public List extractData(ResultSet rs) throws SQLException, DataAccessException {
List result = new ArrayList();
while(rs.next()) {
Map row = new HashMap();
row.put(rs.getInt("id"), rs.getString("name"));
result.add(row);
}
return result;
}});
另一种处理方式例如:jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class));
NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,可以使用DataSource或JdbcTemplate 对象作为构造器参数初始化,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。 在jdbctemplate中的sql语句中参数一般用?占位符,而在NamedParameterJdbcTemplate使用(:参数名)表示需要传递的参数,通过一个Map或SqlParameterSource 的方式将参数传递给NamedParameterJdbcTemplate.用map的所有参数的值都必须要放到map中去,其中的key为:后面的名称,value是你传的值 SqlParameterSource的好处是不用一个个的赋值,但是:x中的x的值必须和对象的属性名称一样