spring jdbcTemplate 操作接口使用

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;

import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.RowMapperResultReader;

public class SpringJDBCDAO {

private class PersonRowMapper implements RowMapper {
public Object mapRow(ResultSet rs, int index) throws SQLException {
Person person = new Person();
person.setId(new Integer(rs.getInt("id")));
person.setFirstName(rs.getString("first_name"));
person.setLastName(rs.getString("last_name"));
return person;
}
}

private JdbcTemplate jdbcTemplate;

public void processStoredProcedure() {
CallableStatementCallback cb = new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs)
throws SQLException {
cs.execute();
return null;
}
};
jdbcTemplate.execute("{ ARCHIVE_STUDENTS }", cb);
}

public List getAllPersons() {
String sql = "select id, first_name, last_name from person";
return jdbcTemplate.query(sql, new RowMapperResultReader(
new PersonRowMapper()));
}

public String getLastNameForId(Integer id) {
String sql = "select last_name from person where id = ?";
return (String) jdbcTemplate.queryForObject(sql, new Object[] { id },
String.class);
}

public int getNumberOfPersons() {
return jdbcTemplate.queryForInt("select count(*) from person");
}

public Person getPerson1(final Integer id) {
String sql = "select id, first_name, last_name from person where id = ?";
final Person person = new Person();
final Object[] params = new Object[] { id };
jdbcTemplate.query(sql, params, new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
person.setId(new Integer(rs.getInt("id")));
person.setFirstName(rs.getString("first_name"));
person.setFirstName(rs.getString("last_name"));
}
});
return person;
}

public Person getPerson2(final Integer id) {
String sql = "select id, first_name, last_name from person where id = ?";
final Person person = new Person();
final Object[] params = new Object[] { id };
List list = jdbcTemplate.query(sql, params, new RowMapperResultReader(
new PersonRowMapper()));
return (Person) list.get(0);
}

public int insertPerson(Person person) {
String sql = "insert into person (id, firstName, lastName) values (?, ?, ?)";
Object[] params = new Object[] { person.getId(), person.getFirstName(),
person.getFirstName() };
int[] types = new int[] { Types.INTEGER, Types.VARCHAR, Types.VARCHAR };
JdbcTemplate jdbcTemplate = null;
return jdbcTemplate.update(sql, params, types);
}

public int[] updatePersons(final List persons) {
String sql = "insert into person (id, firstName, lastName) values (?, ?, ?)";
BatchPreparedStatementSetter setter = null;
setter = new BatchPreparedStatementSetter() {
public int getBatchSize() {
return persons.size();
}

public void setValues(PreparedStatement ps, int index)
throws SQLException {
Person person = (Person) persons.get(index);
[color=red] ps.setInt(0, person.getId().intValue());
ps.setString(1, person.getFirstName());
ps.setString(2, person.getLastName()); [/color]
}
};
return jdbcTemplate.batchUpdate(sql, setter);
}
}

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

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import javax.sql.DataSource;

import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.MappingSqlQuery;
import org.springframework.jdbc.object.SqlUpdate;

public class SpringJDBCDAOWithObject {
class InsertPerson extends SqlUpdate {
public InsertPerson(DataSource ds) {
setDataSource(ds);
setSql("insert into person (id, firstName, lastName) values (?, ?, ?)");
declareParameter(new SqlParameter(Types.NUMERIC));
declareParameter(new SqlParameter(Types.VARCHAR));
declareParameter(new SqlParameter(Types.VARCHAR));
compile();
}

public int insert(Person person) {
Object[] params = new Object[] { person.getId(),
person.getFirstName(), person.getLastName() };
return update(params);
}
}

private class PersonByIdQuery extends MappingSqlQuery {
public PersonByIdQuery(DataSource ds) {
super(ds, "select id, first_name, last_name from person "
+ "where id = ?");
declareParameter(new SqlParameter("id", Types.INTEGER));
compile();
}

public Object mapRow(ResultSet rs, int rowNumber) throws SQLException {
Person person = new Person();
person.setId((Integer) rs.getObject("id"));
person.setFirstName(rs.getString("first_name"));
person.setLastName(rs.getString("last_name"));
return person;
}
}

private InsertPerson insertPerson;

private PersonByIdQuery personByIdQuery;

public Person getPerson(Integer id) {
Object[] params = new Object[] { id };
return (Person) personByIdQuery.execute(params).get(0);
}

public int insertPerson(Person person) {
return insertPerson.insert(person);
}
}
红色应从1开始
[color=blue]ps.setInt(1, person.getId().intValue());
ps.setString(2, person.getFirstName());
ps.setString(3, person.getLastName()); [/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值