RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装,如果是Java自定义的类型,如:String则不需要,Spring最新的类SimpleJdbcTemplate使用更加简单了。
下面这个实例说明了如何使用RowMapp,从网上下载的代码,还行能说明问题。在使用过程中我们可以将内部类做成POJO的外部类,只要实现RowMapper接口即可。如果用户想让ApplicationContext进行定义还是要谨慎。毕竟实现RowMapper接口需要给一个类增加一个mapRow方法,让类承受的功能较多,不利于分析系统
实现一、在内部建立内联类实现RowMapper接口
package hysteria.contact.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import hysteria.contact.dao.ItemDAO;
import hysteria.contact.domain.Item;
public class ItemDAOImpl implements ItemDAO {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public Item insert(Item item) {
String sql = "INSERT INTO items(user_id,name,phone,email) VALUES(?,?,?,?)";
Object[] params = new Object[] { item.getUserId(), item.getName(),
item.getPhone(), item.getEmail() };
int[] types = new int[] { Types.INTEGER, Types.VARCHAR, Types.CHAR,
Types.VARCHAR };
jdbcTemplate.update(sql, params, types);
return item;
}
public Item update(Item item) {
String sql = "UPDATE items SET name = ?, phone = ?, email = ? WHERE id = ?";
Object[] params = new Object[] { item.getName(), item.getPhone(),
item.getEmail(), item.getId() };
int[] types = new int[] { Types.VARCHAR, Types.CHAR, Types.VARCHAR,
Types.VARCHAR, Types.INTEGER };
jdbcTemplate.update(sql, params, types);
return item;
}
public void delete(Item item) {
String sql = "DELETE FROM items WHERE id = ?";
Object[] params = new Object[] { item.getId() };
int[] types = new int[] { Types.INTEGER };
jdbcTemplate.update(sql, params, types);
}
public Item findById(int id) {
String sql = "SELECT * FROM items WHERE id = ?";
Object[] params = new Object[] { id };
int[] types = new int[] { Types.INTEGER };
List items = jdbcTemplate.query(sql, params, types, new ItemMapper());
if (items.isEmpty()) {
return null;
}
return (Item) items.get(0);
}
public List<Item> findAll() {
String sql = "SELECT * FROM items";
return jdbcTemplate.query(sql, new ItemMapper());
}
public List<Item> findAllByUser(int user_id) {
String sql = "SELECT * FROM items WHERE user_id = ?";
Object[] params = new Object[] { user_id };
int[] types = new int[] { Types.INTEGER };
List items = jdbcTemplate.query(sql, params, types, new ItemMapper());
return items;
}
protected class ItemMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Item item = new Item();
item.setId(rs.getInt("id"));
item.setUserId(rs.getInt("user_id"));
item.setName(rs.getString("name"));
item.setPhone(rs.getString("phone"));
item.setEmail(rs.getString("email"));
return item;
}
}
}
分享到:
相关推荐
Spring框架是Java开发中广泛应用的一个开源项目,它极大地简化了企业级应用的开发工作,特别是在数据访问层。本文将深入探讨Spring对JDBC(Java Database Connectivity)的支持,以及如何在实际项目中使用这些功能。...
Spring框架是Java应用程序开发中的核心组件,主要用于简化企业级应用的开发复杂性。Spring提供了诸如依赖注入、面向切面编程、事务管理等特性,使得开发者能够更专注于业务逻辑而不是基础设施的搭建。在这个“Spring...
Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...
3. **RowMapper** 和 **ResultSetExtractor**:这些接口用于从结果集中提取数据并转换为Java对象。开发者可以自定义实现,以适应特定的数据模型。 4. **JdbcTransactionManager**:Spring JDBC提供了事务管理功能,...
对于JDBC,Spring引入了RowMapper和ResultSetExtractor,方便将数据库查询结果转换为Java对象。 在Web开发方面,Spring MVC是核心组件之一。在4.3.7版本中,它支持了更丰富的HTTP注解,如`@RequestMapping`、`@...
Spring JDBC还引入了RowMapper接口,这是一个回调接口,用于将数据库结果集中的每一行映射为一个Java对象。此外,NamedParameterJdbcTemplate类提供了命名参数的支持,使得SQL语句更易读,参数更易管理。同时,...
《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中用于简化JDBC操作的一个核心组件,它是Spring对JDBC API的封装,旨在提供一个更加简洁、健壮且可测试的数据库访问层。在这个实例工程中,我们...
return jdbcTemplate.query(sql, new RowMapper() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs...
- Spring JDBC提供了RowMapper接口,用于将数据库查询结果映射为Java对象。你可以自定义RowMapper实现,也可以使用`BeanPropertyRowMapper`或`ResultSetExtractor`简化映射过程。 4. **批处理操作**: - 对于批量...
4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC事务管理 1. 编程式事务管理:通过PlatformTransactionManager接口的begin(), commit()和...
在Java开发中,Spring框架是不可或缺的一部分,它提供了一种优雅的方式来管理应用程序的组件和依赖关系。Spring JDBC(Java Database Connectivity)模块则是Spring框架中用于简化数据库操作的重要部分。本篇将深入...
这里的UserRowMapper是自定义的RowMapper,用于将结果集中的一行映射到User对象。 事务管理是Spring JDBC的另一个强项。通过声明式事务管理,可以在配置文件中定义事务边界,Spring会自动处理事务的开始、提交或...
Spring通过RowMapper和ResultSetExtractor将数据库结果映射到Java对象,实现了数据操作的面向对象化。 26. **Spring提供的其它帮助** 如事务管理、数据库连接池集成等,Spring提供了丰富的功能来优化JDBC使用。 ...
这些方法可以配合RowMapper或ResultSetExtractor来处理查询结果。 3. **参数化查询**:`JdbcTemplate`支持预编译的SQL语句(PreparedStatement),可以防止SQL注入攻击。通过`update`或`execute`方法,可以传入参数...
4. **JDBC模板**:Spring 3.x改进了JdbcTemplate,提供了更高级别的抽象,如RowMapper和ResultSetExtractor,简化了数据库操作。 5. **模板方法**:Spring 3.x增加了许多模板类,如RestTemplate,简化了RESTful服务...
- **执行SQL查询**:使用`query(String sql, RowMapper<T> rowMapper)`方法执行SQL查询,`RowMapper`接口用于将结果集中的每一行映射为Java对象。 - **执行SQL更新**:使用`update(String sql, Object... args)`...
5. **处理结果**:对于查询操作,JdbcTemplate会返回一个ResultSet,可以通过RowMapper或ResultSetExtractor进行映射,转换成Java对象。 6. **事务管理**:通过@Transactional注解标记方法,Spring会自动管理事务的...
此外,它还支持RowMapper和ResultSetExtractor,用于将数据库结果映射为Java对象。 4. **整合过程**:整合这三个框架通常涉及到以下步骤: - 配置Spring的Bean定义,包括Spring MVC的DispatcherServlet、...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Dorado则是一个企业级的富互联网应用程序(Rich Internet Application,RIA)开发平台。整合Spring与Dorado可以让我们充分利用两者的优势,构建功能...
在Spring框架中,JDBC模板(JdbcTemplate)是Spring对Java数据库连接(JDBC)API的一个强大封装,它简化了数据库操作,使开发者能够更专注于业务逻辑而不是底层的数据库交互细节。今天我们将深入探讨Spring的JDBC...