`

JdbcTemplate - 查询

阅读更多

使用JdbcTemplate进行查询时,可以使用queryForXXX()等方法,例如下面使用queryForInt()方法传回user表格中的资料笔数:

jdbcTemplate.queryForInt("SELECT COUNT(*) FROM user");


也可以使用queryForObject()传回一个查询后的结果物件,例如下例传回一个String物件:

String name = (String) jdbcTemplate.queryForObject(
                "SELECT name FROM USER WHERE id = ?",
                 new Object[] {id},
                 java.lang.String.class);


上面两个例子传回的都是单一笔资料,如果传回多笔资料,则可以使用queryForList()方法,例如:

List rows = jdbcTemplate.queryForList(
          "SELECT * FROM user WHERE id=" + id.intValue());



传回的List中包括的是Map物件,每个Map物件代表查询结果中的一笔资料,每笔资料包括多个栏位内容,要取得栏位中的值,要使用栏位名称作为键(Key),例如:

...
Iterator it = rows.iterator();
while(it.hasNext()) {
    Map userMap = (Map) it.next();
    System.out.println(userMap.get("id"));
    System.out.println(userMap.get("name"));
    System.out.println(userMap.get("age"));
    ...
}
...


您可以实作org.springframework.jdbc.core.RowCallbackHandler介面,在查询到资料之后先作一些处理再传回,例如修改一下 使用 JdbcTemplate 中UserDAO的find()方法如下:

...
public User find(Integer id) {
    final User user = new User();
    jdbcTemplate.query(
       "SELECT * FROM user WHERE id = ?",
       new Object[] {id},
         new RowCallbackHandler() {
            public void processRow(ResultSet rs)
                                    throws SQLException {
                user.setId(new Integer(rs.getInt("id")));
                user.setName(rs.getString("name"));
                user.setAge(new Integer(rs.getInt("age")));
            }
        });
   
    return user;
}
...


如果一次要取回很多查询结果的物件,则您可以先实作org.springframework.jdbc.core.RowMapper介面,例如:

package onlyfun.caterpillar;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

public class UserRowMapper implements RowMapper {

    public Object mapRow(ResultSet rs,
                         int rowNum) throws SQLException {
        User user = new User();

        user.setId(new Integer(rs.getInt("id")));
        user.setName(rs.getString("name"));
        user.setAge(new Integer(rs.getInt("age")));

        return user;
    }
}


接着在查询时可以使用org.springframework.jdbc.core.RowMapperResultReader这么设定, RowMapperResultReader实作了org.springframework.jdbc.core.ResultReader介面:

...
List users = jdbcTemplate.query(
          "SELECT * FROM user",
        new RowMapperResultReader(new UserRowMapper()));

for(int i = 0; i < users.size(); i++) {
    User user = (User) list.get(i);
    System.out.println("\tId:\t" + user.getId());
    System.out.println("\tName:\t" + next.getName());
    System.out.println("\tAge:\n" + user.getAge());
}
...


传回的List物件中,包括了从资料库中查询出来的结果,并已封装为User类别的实例。
分享到:
评论
1 楼 bushkarl 2011-03-14  
用上,谢这位哥们了!

相关推荐

    JdbcTemplate查询

    JdbcTemplate是一个框架,是用来操作数据库的,有些羡慕就是用JdbcTemplate开发的所有我们有必要去了解

    使用Spring的JdbcTemplate实现分页功能

    使用Spring的JdbcTemplate实现分页功能

    jdbcTemplate分页彻底解决,使用游标滚动

    jdbcTemplate分页彻底解决,使用游标滚动,看了Spring源码才解决了问题

    spring自带的jdbcTemplate查询、插入预编译使用

    简单的jdbcTemplate预编译、回调等

    Spring框架JdbcTemplate类中查询方法介绍

    Spring框架JdbcTemplate类中查询方法介绍

    java spring手写jdbcTemplate,实现查询多数据源数据。

    最近项目中的工作流需要查询多个数据源的数据,数据源可能是不同种类的:如sql server,oracl等等,一开始是用的配置实现,后来发现在项目运行中,可能需要动态的添加更多不同类型的数据源,所以最终的逻辑是将数据源...

    springmvc-jdbcTemplate

    * 数据查询DAO支持类 * * 创建日期:2012-9-26 * @author wangk */ public abstract class BaseDaoSupport implements BaseDao, InitializingBean { /** 日志对象 */ private static final Logger logger = ...

    JdbcTemplate的jar包.rar

    JdbcTemplate的jar包 内含: commons-logging-1.2.jar spring-beans-5.0.0.RELEASE.jar spring-core-5.0.0.RELEASE.jar spring-jdbc-5.0.0.RELEASE.jar spring-tx-5.0.0.RELEASE.jar 查询一行的内容,封装为...

    打印JdbcTemplate执行sql

    NULL 博文链接:https://yunzhongxia.iteye.com/blog/611591

    jdbcTemplate集锦很好的推荐

    jdbcTemplate常用的查询方法集锦

    jdbctemplatedemo.zip

    利用spring boot的jdbctemplate实现大批量数据导出数据库道文件,及文件中大批量数据导入mysql数据库

    spring框架 jdbcTemplate

    spring mvc框架 jdbcTemplate 里面有查询,删除,修改,增加操作。 jdbcTemplate dataSOURCE

    使用jdbcTemplate查询返回自定义对象集合代码示例

    主要介绍了使用jdbcTemplate查询返回自定义对象集合代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    Spring的JDBCTemplate

    当hql等查询方式不能满足性能或灵活性的要求,必须使用SQL时,大家有三种选择: 第一、使用Hibernate 的sql 查询函数,将查询结果对象转为Entity对象。 第二、使用Hibernate Session的getConnection 获得JDBC ...

    JdbcTemplate教程

    JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。 除了大量...

    开源框架 Spring Gossip

    使用 JdbcTemplate JdbcTemplate 执行与更新 &lt;br&gt;JdbcTemplate - 查询 以物件方式进行操作 DataFieldMaxValueIncrementer 交易管理 Spring 提供编程式的交易管理(Programmatic ...

    SpringBoot JdbcTemplate批量操作的示例代码

    本篇文章主要介绍了SpringBoot JdbcTemplate批量操作的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JdbcTemplate基本使用

    JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作...

    JdbcTemplate,自己封装的jdbc小框架

    以自己所掌握的知识,运用一定的设计模式,对JDBC的一般性操作(CRUD)进行封装,支持批量操作,希望对各位童鞋有帮助

Global site tag (gtag.js) - Google Analytics