使用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类别的实例。
分享到:
相关推荐
2. **结果集处理**:JdbcTemplate提供了多种方法来处理查询结果,如MapListRowCallbackHandler,将每一行数据转换为Map,以及ResultSetExtractor,允许自定义结果集的转换逻辑。 3. **事务管理**:Spring的事务管理...
通过使用模板方法设计模式,`JdbcTemplate`提供了一系列静态和非静态的方法来执行各种SQL操作,如查询、更新、插入和删除。 为了打印`JdbcTemplate`执行的SQL语句,我们需要关注以下几点: 1. **日志配置**:首先...
3. 执行分页查询:通过分页信息调用JdbcTemplate方法来返回结果集合。 JdbcTemplate的使用涉及到许多细节,如事务管理、异常处理和SQL注入防护等。在具体应用时,开发者需要结合实际业务需求和Spring框架的其他特性...
### JdbcTemplate查询详解 #### 一、概述 `JdbcTemplate`是Spring框架中提供的一个用于简化JDBC编程的工具类,它提供了丰富的API来帮助开发者更便捷地进行数据库操作。相较于传统的JDBC编程方式,使用`...
在使用`jdbcTemplate`进行预编译查询时,我们通常会使用`query()`或`queryForList()`方法。例如: ```java String sql = "SELECT * FROM table WHERE id = ?"; Object[] params = {1}; List<MyObject> result = ...
使用Spring的JdbcTemplate实现分页功能
在`JdbcTemplate`中,我们可以使用`callProcedure()`或`execute()`方法执行带有游标的SQL查询。例如,可以创建一个存储过程,该过程返回一个可滚动的结果集。然后,`JdbcTemplate`会使用`ResultSetExtractor`接口来...
1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...
Spring 框架 JdbcTemplate 类中查询方法介绍 JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法...
- **JdbcTemplate的高级用法**:`SimpleJdbcTemplate`是`JdbcTemplate`的轻量级版本,若需更多定制功能,可以考虑直接使用`JdbcTemplate`。 总结,`SimpleJdbcTemplate`是Spring对JDBC的一层抽象,它降低了数据库...
JdbcTemplate支持SQL语句的动态构造,可以方便地执行查询、更新、插入和删除等操作。 数据库方面,本项目选择了Oracle,这是一个流行的商业关系型数据库管理系统(RDBMS)。Oracle提供了高性能、高可用性和安全性,...
Java中的JdbcTemplate是Spring框架提供的一种用于简化JDBC(Java Database Connectivity)操作的工具,它在数据持久层操作中扮演着重要角色。JdbcTemplate通过消除大量重复的JDBC样板代码,提高了代码的可读性和可...
本文将深入探讨如何利用Spring的JdbcTemplate进行MySQL数据库的分页查询,并对其进行封装,提高代码的复用性和可维护性。 首先,了解Spring JdbcTemplate的基本用法。JdbcTemplate是Spring提供的一个模板类,用于...
使用JdbcTemplate查询数据,你需要创建一个`JdbcTemplate`实例,通常通过依赖注入的方式从Spring容器中获取。例如: ```java @Autowired private JdbcTemplate jdbcTemplate; ``` 然后,你可以使用`...
1. **JdbcTemplate的基本使用**:JdbcTemplate的核心在于它的`update()`和`query()`方法,前者用于执行更新语句(INSERT、UPDATE、DELETE),后者用于执行查询语句。这些方法接收SQL语句作为参数,并可以传递绑定...
**Spring-JdbcTemplate 知识详解** `Spring-JdbcTemplate` 是 Spring 框架中的一个核心模块,主要用于简化数据库操作,提供了强大的数据访问功能。它通过模板方法设计模式封装了 SQL 的执行,使得开发者无需直接与 ...
例如,如果项目中有`User`实体,那么它将有如`id`、`name`、`email`等属性,对应的getter和setter方法使得JdbcTemplate可以方便地将数据库查询结果映射到这些对象上。 "util"目录可能包含了一些工具类,例如数据库...
SpringJdbcTemplate支持分页查询,通过`SimpleJdbcCall`或`NamedParameterJdbcCall`类,可以配合`RowCallbackHandler`或`ResultSetExtractor`处理分页结果。此外,还可以使用`JdbcPagingItemReader`作为Spring ...
4. **使用`jdbcTemplate`进行数据库操作**:现在你可以通过@Autowired注解注入`jdbcTemplate`到你的业务逻辑类中,然后使用其提供的方法执行SQL查询、更新等操作。例如,执行一个简单的SELECT语句: ```java @...