`
meiyx
  • 浏览: 180851 次
  • 性别: 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;
        }

    }

}

分享到:
评论

相关推荐

    thucydides-junit-0.9.125.zip

    springjdbc-constructor-mapper.zip,spring的rowmapper实现,用于对其构造函数进行注释的类

    spring.net中文手册在线版

    RowMapper 17.11.4. Query for a single object 17.11.5. Query using a CommandCreator 17.12. DataTable and DataSet 17.12.1. DataTables 17.12.2. DataSets 17.13. Deriving Stored Procedure Parameters 17.14...

    spring.doc

    5.1.7 RowMapper的使用 107 拓展: 108 DataSource注入的三种方式: 108 5.1.8声明式事务管理 116 5.1.8.1Spring的事务管理器 117 5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1...

    利用spring的jdbcTemplate处理blob、clob

    spring 中对大数据的处理,包括clob,blob的数据。比之jdbc下简便很多。

    Spring高级之注解驱动开发视频教程

    视频详细讲解,需要的小...n 设计模式-RowMapper的策略模式 n 高级应用-NamedParameterJdbcTemplate的使用 n 源码分析-TransactionTemplate n 源码分析-DataSourceUtils n 源码分析-TransactionSynchronizationManager

    JavaEE的Spring JDBC与事务管理 实验

    rowMapper public double findBookPriceByIsbn(String isbn); //更新书的库存,使书号对应的库存减num,若库存不足,则给出提示,并且不更新 public void updateBookStock(String isbn, int num); //更新用户的...

    基于spring jdbc的上层封装,底层jdbc操作基于JdbcTemplate

    基于spring jdbc的RowMapper自动实现对象映射,大部分功能已经由spring jdbc实现了。2、数据类型的设计:集成了JFinal和SBORM的优点,对字段的大小写不敏感,对强类型实体、弱类型实体和非实体的支持。3、统一的接口...

    springMVC4.0.6+spring4.0.6+hibernate4.3.6

    springMVC4.0.6+spring4.0.6+hibernate4.3.6框架,基本的包结构,dao基础类的封装,rowmapper,分页等工具类的封装。

    SpringData@Query的注释的代码实现

    主要是如何利用@Query注释来完成增加,删除,的操作

    SPRING API 2.0.CHM

    RowMapper RowMapperResultSetExtractor RuleBasedTransactionAttribute RuntimeBeanNameReference RuntimeBeanReference RuntimeTestWalker SavepointManager ScheduledExecutorFactoryBean ...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    SBORM只是针对spring jdbc的一些不方便的地方,做了一些封装,更加简化日常的开发工作,基于spring jdbc的RowMapper自动实现对象映射,也勉强算的上叫ORM,只是大部分功能已经由spring jdbc实现了。 平时不太...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码,代码可以直接复制到项目中使用,代码是基于pring框架的

    easyjdbc-spring-boot-starter:easyjdbc-spring-boot-starter在easyjdbc之上进行了一些自动spring boot配置

    easyjdbc-spring-boot-startereasyjdbc-spring-boot-starter,支持部分常用的JPA注解,使得经过注解的实体可以像Hibernate,jpa一样进行增、删、改和获取。SQL构造工具、链式API等让查询操作更为灵活。动态实体映射...

    FreeMarker模板包括dto、dao、rowmapper、bo、service

    FreeMarker通用模板。... 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。... 那就意味着要准备数据在真实编程语言中来显示,比如...

    spring-boot-jdbc-hiraki:Proyecto Spring Boot扩展了Conexiones和JDBC

    Proyecto Spring Boot Condeiones和JDBC的示例Elementos Utilziados HirakiConfig 数据源NamedParameterJdbcTemplate DataSourceTransactionManager LombokSqlParameterSource BeanPropertySqlParameterSource ...

    jdbc-helpers:Jdbc助手

    jdbc助手MetadataAwareRowMapper(Spring RowMapper)的Poc。 当重用映射器用于例如连接查询时可能会有所帮助,其中不同表中的列名可能会发生冲突。

    rest风格+jdbctemplate的CRUD操作.rar

    运用到的技术:spring+springMVC+jdbctemplate+MVC框架 具体细节: ①查询所有员工列表:jdbcTemplate.query(sql, new RowMapper() {}回调函数的使用 ②添加员工:添加员工之前要先查询出所有部门,因此要先查询所有...

    javascript:void(0);

    import org.springframework.jdbc.core.RowMapper; import entity.Material; public class MaterialService extends BaseService { /** * 把一条材料信息加入到数据库中 */ public void addMr...

    fmgVen:配置Java ORM工具-开源

    fmgVen是配置Java ORM工具的约定。 fmgVen是重量级ORM工具的替代方法,在该工具中,映射需要配置,并且由于延迟加载而产生许多问题,等等。它无需明确的映射配置... 它是Spring JdbcTemplate / RowMapper的高级形式。

Global site tag (gtag.js) - Google Analytics