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);
}
}
分享到:
相关推荐
Mybatis则是一个轻量级的持久层框架,它解决了JDBC的繁琐代码问题,提供了更方便的SQL映射和对象关系映射。Mybatis允许开发者直接编写SQL,提高了查询效率和灵活性,同时通过XML或注解方式配置和映射原生信息,将...
Spring是一个开源的Java平台,它简化了企业级应用的开发,通过提供依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,实现了代码的解耦和模块化。 2. **依赖...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。Spring 4.2.5是该框架的一个稳定版本,为开发者提供了丰富的...这份文档是学习和参考Spring框架的宝贵资源,值得每一个Java开发者收藏。
此外,Spring还包含数据访问/集成层,如JDBC抽象、ORM支持(Hibernate、MyBatis等)、JPA等,以及对邮件服务、任务调度、远程调用等的支持。 在“Spring框架参考文档(中文版PDF)”中,你将深入学习到Spring的各个...
这份名为“Spring核心知识点完整梳理(史上最全,值得收藏)”的资料可能是对Spring框架进行全面剖析的文档,涵盖了Spring的各种关键概念和技术。 1. **依赖注入(Dependency Injection,DI)**:这是Spring的核心...
以上只是Java编程中的一部分知识点,实际的"Java代码收藏"可能涵盖了更广泛的主题,包括但不限于设计模式、数据库操作、XML解析、GUI编程、JSP和Servlet(Web开发)、JDBC(数据库访问)、JUnit(单元测试)等。...
在应用方面,文章提到了使用该基于Spring的MVC框架开发的网络收藏夹案例。这表明了该框架不仅适用于简单的示例,而且能够支撑实际的网络应用程序开发。通过具体的案例分析,开发者能够更深入地理解MVC框架在实际项目...
Spring框架是Java开发中广泛应用的一个开源框架,以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-...因此,确保收藏并充分利用这些中文API文档,将极大地促进你对Spring框架的理解和掌握。
基于struts2+spring+springjdbc开发的代码分享网,所有源码已开源。 网站功能介绍: 1、邮件注册(采用阿里云企业邮箱),为了让大家体验一下邮箱注册功能。我已经在分享的源码中,为大家配置好了测试账户,大家可以...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 8. ...
4. **DAO和JDBC抽象**:Spring提供了一套JDBC模板,简化了数据库操作,减少了手动处理数据库连接的代码。 5. **与Struts和Hibernate的集成**:Spring可以轻松地与Struts和Hibernate结合,提供统一的事务管理和更高...
首先,MyBatis作为Java中的一个持久层框架,它的主要作用是简化数据库操作,通过XML或注解的方式将SQL语句与Java代码绑定,使得开发者可以更专注于业务逻辑而非繁琐的JDBC代码。在"易买网代码"项目中,MyBatis被用来...
1. **简化JDBC编程**:传统的JDBC编程非常繁琐,需要处理大量的资源管理代码。Hibernate通过提供高级的数据持久化服务,极大地简化了这一过程。 2. **ORM(Object-Relational Mapping)映射**:Hibernate支持将Java...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过XML或注解的方式将接口实现类映射到数据库语句,使开发变得更加轻松。 - **在系统中的体现**:Mybatis主要负责数据访问层,通过配置映射关系,...
- **Spring 相关**:Spring WebMVC、Spring JDBC、Spring AOP等。 - **MyBatis 相关**:MyBatis 框架本身及其与Spring集成的组件。 - **数据库连接**:MySQL驱动及 Druid 连接池。 - **日志系统**:SLF4J+Log4...
1. 封装了JDBC,减少重复的数据库访问代码。 2. 作为ORM框架,简化DAO层的编写。 3. 利用Java反射机制实现透明性,无需字节码增强。 4. 性能优异,轻量级,支持多种数据库关系映射。 Hibernate的延迟加载机制允许在...
MyBatis则提供了一种轻量级的ORM(对象关系映射)解决方案,避免了传统的JDBC代码的繁琐,同时保持了SQL的灵活性。 Spring Boot的出现,进一步提升了开发效率。它通过自动配置,使得开发者无需编写大量配置文件,就...
2. **数据存储**:Java通常会结合关系型数据库如MySQL或非关系型数据库如MongoDB,通过JDBC或ORM框架如Hibernate进行数据操作。 3. **前端界面**:可能使用了HTML、CSS和JavaScript,结合Bootstrap、Vue.js或React....
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 4. **...