`
meiyx
  • 浏览: 183670 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Spring – RowMapper

阅读更多
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对jdbc的支持jar包

    Spring框架是Java开发中广泛应用的一个开源项目,它极大地简化了企业级应用的开发工作,特别是在数据访问层。本文将深入探讨Spring对JDBC(Java Database Connectivity)的支持,以及如何在实际项目中使用这些功能。...

    spring教程

    Spring框架是Java应用程序开发中的核心组件,主要用于简化企业级应用的开发复杂性。Spring提供了诸如依赖注入、面向切面编程、事务管理等特性,使得开发者能够更专注于业务逻辑而不是基础设施的搭建。在这个“Spring...

    Spring Data JDBC与JDBC的区别

    Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...

    spring-jdbc jar包.rar

    3. **RowMapper** 和 **ResultSetExtractor**:这些接口用于从结果集中提取数据并转换为Java对象。开发者可以自定义实现,以适应特定的数据模型。 4. **JdbcTransactionManager**:Spring JDBC提供了事务管理功能,...

    spring 4.3.7及以上的jar包

    对于JDBC,Spring引入了RowMapper和ResultSetExtractor,方便将数据库查询结果转换为Java对象。 在Web开发方面,Spring MVC是核心组件之一。在4.3.7版本中,它支持了更丰富的HTTP注解,如`@RequestMapping`、`@...

    Spring事务管理和SpringJDBC思维导图

    Spring JDBC还引入了RowMapper接口,这是一个回调接口,用于将数据库结果集中的每一行映射为一个Java对象。此外,NamedParameterJdbcTemplate类提供了命名参数的支持,使得SQL语句更易读,参数更易管理。同时,...

    spring-jdbcTemplate实例工程

    《深入解析Spring JdbcTemplate》 Spring JDBC Template是Spring框架中用于简化JDBC操作的一个核心组件,它是Spring对JDBC API的封装,旨在提供一个更加简洁、健壮且可测试的数据库访问层。在这个实例工程中,我们...

    spring jdbc.zip

    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...

    SpringJDBC.rar_SpringJDBC_spring jdbc

    - Spring JDBC提供了RowMapper接口,用于将数据库查询结果映射为Java对象。你可以自定义RowMapper实现,也可以使用`BeanPropertyRowMapper`或`ResultSetExtractor`简化映射过程。 4. **批处理操作**: - 对于批量...

    spring-jdbc-dao

    4. RowMapper:用于将结果集中的每一行映射为Java对象,自定义RowMapper可以灵活处理复杂的数据结构。 四、Spring JDBC事务管理 1. 编程式事务管理:通过PlatformTransactionManager接口的begin(), commit()和...

    spring 整合JDBC 原创代码

    在Java开发中,Spring框架是不可或缺的一部分,它提供了一种优雅的方式来管理应用程序的组件和依赖关系。Spring JDBC(Java Database Connectivity)模块则是Spring框架中用于简化数据库操作的重要部分。本篇将深入...

    Spring-JDBC整合-MySQL8、java8版本

    这里的UserRowMapper是自定义的RowMapper,用于将结果集中的一行映射到User对象。 事务管理是Spring JDBC的另一个强项。通过声明式事务管理,可以在配置文件中定义事务边界,Spring会自动处理事务的开始、提交或...

    跟我学spring3(1-7)

    Spring通过RowMapper和ResultSetExtractor将数据库结果映射到Java对象,实现了数据操作的面向对象化。 26. **Spring提供的其它帮助** 如事务管理、数据库连接池集成等,Spring提供了丰富的功能来优化JDBC使用。 ...

    Spring JDBC相关jar包:spring_jdbc_4.0.0.zip

    这些方法可以配合RowMapper或ResultSetExtractor来处理查询结果。 3. **参数化查询**:`JdbcTemplate`支持预编译的SQL语句(PreparedStatement),可以防止SQL注入攻击。通过`update`或`execute`方法,可以传入参数...

    Spring+3.x企业应用开发实战光盘源码,保证可用

    4. **JDBC模板**:Spring 3.x改进了JdbcTemplate,提供了更高级别的抽象,如RowMapper和ResultSetExtractor,简化了数据库操作。 5. **模板方法**:Spring 3.x增加了许多模板类,如RestTemplate,简化了RESTful服务...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    - **执行SQL查询**:使用`query(String sql, RowMapper&lt;T&gt; rowMapper)`方法执行SQL查询,`RowMapper`接口用于将结果集中的每一行映射为Java对象。 - **执行SQL更新**:使用`update(String sql, Object... args)`...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    5. **处理结果**:对于查询操作,JdbcTemplate会返回一个ResultSet,可以通过RowMapper或ResultSetExtractor进行映射,转换成Java对象。 6. **事务管理**:通过@Transactional注解标记方法,Spring会自动管理事务的...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    此外,它还支持RowMapper和ResultSetExtractor,用于将数据库结果映射为Java对象。 4. **整合过程**:整合这三个框架通常涉及到以下步骤: - 配置Spring的Bean定义,包括Spring MVC的DispatcherServlet、...

    整合spring+dorado

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而Dorado则是一个企业级的富互联网应用程序(Rich Internet Application,RIA)开发平台。整合Spring与Dorado可以让我们充分利用两者的优势,构建功能...

    day39-Spring 18-Spring的JDBC模板:查询的操作

    在Spring框架中,JDBC模板(JdbcTemplate)是Spring对Java数据库连接(JDBC)API的一个强大封装,它简化了数据库操作,使开发者能够更专注于业务逻辑而不是底层的数据库交互细节。今天我们将深入探讨Spring的JDBC...

Global site tag (gtag.js) - Google Analytics