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);
ps.setInt(0, person.getId().intValue());
ps.setString(1, person.getFirstName());
ps.setString(2, person.getLastName());
}
};
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开始
ps.setInt(1, person.getId().intValue());
ps.setString(2, person.getFirstName());
ps.setString(3, person.getLastName());
分享到:
相关推荐
本教程将深入探讨如何使用基于注解的Spring JdbcTemplate进行数据库操作,特别适合初学者入门学习。 ### 1. Spring JdbcTemplate简介 Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储...
在这个实例工程中,我们将深入探讨Spring JdbcTemplate的基本使用、优势以及常见操作。 一、Spring JdbcTemplate简介 Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行...
在描述中提到的“规范model格式接口”,可能是指创建一套标准的数据访问接口,这些接口定义了CRUD(Create、Read、Update、Delete)操作,并由SpringJdbcTemplate实现具体的数据库交互逻辑。这样做的好处是解耦了...
Spring JdbcTemplate接口提供了丰富的API,用于执行SQL查询、更新、插入、删除等操作。它抽象了数据库连接管理、事务控制等复杂过程,使代码更加简洁、易于测试。例如,`queryForList(String sql, Class<T> element...
在登录验证时,Action类会调用Spring服务层的接口,这个接口可能是由Spring的依赖注入机制创建并注入到Action中的。 Spring框架在这个项目中起到了核心的作用。首先,它通过依赖注入管理各个组件,如DAO(数据访问...
Spring JdbcTemplate是Spring框架中用于简化数据库操作的一个重要组件,它是Spring对JDBC的轻量级封装,旨在提供一种结构良好、易于使用的SQL执行机制,同时保持了JDBC的灵活性。在本实例中,我们将深入探讨Spring ...
### Spring JdbcTemplate API:数据库操作的模板模式 #### 概述 在Spring框架中,`JdbcTemplate`是一个用于简化JDBC编程的工具类,它采用了模板模式来分离数据库访问中的不变和可变部分,提供了一种更加健壮且易于...
3. **结果集处理**:对于查询操作,JdbcTemplate可以将结果集映射到Java对象,这通常通过实现RowMapper接口或使用BeanPropertyRowMapper类来完成。RowMapper允许自定义对象映射逻辑,而BeanPropertyRowMapper则会...
JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database Connectivity)的轻量级封装。通过使用JdbcTemplate,开发者可以避免编写大量的样板代码,如打开和关闭连接、处理结果集...
总结,Spring JdbcTemplate提供了一个优雅的JDBC操作接口,使得我们在处理数据库交互时,可以专注于业务逻辑,而不必深陷于繁琐的JDBC语法。在实际项目中,结合图书馆系统Demo的实践,我们可以更好地理解和掌握...
通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。
标题中的“一个简单易用可对象操作基于SpringJdbcTemplate的JDBC帮助包”指的是一个专为简化Java开发中数据库操作而设计的工具包。这个工具包利用了Spring的JdbcTemplate,它是一个轻量级的ORM(对象关系映射)框架...
`Spring-JdbcTemplate` 是 Spring 框架中的一个核心模块,主要用于简化数据库操作,提供了强大的数据访问功能。它通过模板方法设计模式封装了 SQL 的执行,使得开发者无需直接与 JDBC API 打交道,从而降低了数据库...
在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...
使用JdbcTemplate扩展,开发者可以创建自定义的DAO接口,这些接口定义了特定的数据库操作,然后在实现类中利用JdbcTemplate提供的模板方法来完成这些操作。例如,可能会有一个`UserDao`接口,其中包含`getUserById`...
总的来说,这个项目展示了如何使用Spring Security 3.1与Spring、Servlet和JdbcTemplate协作,来构建一个具有安全功能的Web应用程序。通过这个项目,开发者可以学习到如何配置Spring Security的过滤器链、定义权限...
JdbcTemplate操作数据库的方法主要包括: 1. 执行增删改操作(CRUD): - 添加数据:调用JdbcTemplate对象的update方法,传入SQL语句和可变参数(值数组)。 - 删除和修改数据:同样通过update方法,传入相应的SQL...
然后,创建一个`CarRepository`接口,使用JdbcTemplate的方法注解来执行数据库操作: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core....