Professional Java Development with the Spring Framework学习笔记(1) - JdbcTemplate 中Query的几种用法
2005-10-09 09:39
916 查看
数据库准备:
CREATE TABLE mytable(
id INTEGER NOT NULL,
name VARCHAR(50),
PRIMARY KEY(id));
代码:GenreQuery.java
package com.spring.test1;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.jdbc.object.MappingSqlQuery;
public class GenreQuery extends MappingSqlQuery {
private static String SQL_GENRE_QUERY = "select id,name from mytable Order By id";
public GenreQuery(DataSource ds) {
super(ds, SQL_GENRE_QUERY);
//如果有参数,在这里设置
//declareParameter(new SqlParameter("id", Types.INTEGER));
compile();
}
public Object mapRow(ResultSet rs, int rowNumber) throws SQLException {
Genre bean = new Genre();
bean.setId(rs.getLong("id"));
bean.setName(rs.getString("name"));
return bean;
}
}
代码:Genre.java
package com.spring.test1;
/**
* Represents a genere of shows.
*/
public class Genre {
// the id of this genere
private long id;
// the name of this genre
private String name;
/**
* Empty contructor for this genere (to support javabean spec.)
*/
public Genre() {
}
/**
* Constructs a new genre with a given name.
* @param name The name of this genre.
*/
public Genre(String name) {
this.name = name;
}
/**
* Returns the id of this genre.
* @return The id of this genre.
*/
public long getId() {
return id;
}
/**
* Sets the id of this genre.
* @param id The id of this genre.
*/
public void setId(long id) {
this.id = id;
}
/**
* Returns 4000 the name of this genre.
* @return The name of this genre.
*/
public String getName() {
return name;
}
/**
* Sets the name of this genre.
* @param name The name of this genre.
*/
public void setName(String name) {
this.name = name;
}
}
代码:JdbcQueryTest.java
package com.spring.test1;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class JdbcQueryTest extends TestCase {
private DriverManagerDataSource dataSource;
public void setUp() {
dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@gsgaofei:1521:fangj");
dataSource.setUsername("test2");
dataSource.setPassword("test2");
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.execute("delete from mytable");
jt.execute("insert into mytable (id, name) values(1, 'Rock')");
jt.execute("insert into mytable (id, name) values(2, 'Ballet')");
jt.execute("insert into mytable (id, name) values(3, 'Theatre')");
jt.execute("insert into mytable (id, name) values(4, 'Classical')");
jt.execute("insert into mytable (id, name) values(5, 'Musical')");
jt.execute("insert into mytable (id, name) values(6, 'Opera')");
}
/**
* 方法1
*/
public List getAllGenre1() {
StringBuffer sqlBuffer = null;
final List list = new ArrayList();
sqlBuffer = new StringBuffer();
sqlBuffer.append("SELECT * FROM mytable ORDER BY ID");
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.query(sqlBuffer.toString(), new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
Genre bean = new Genre();
bean.setId(rs.getLong("ID"));
bean.setName(rs.getString("NAME"));
list.add(bean);
}
});
return list;
}
public void testGetAllGenre1() {
System.out.println("------- getAllGenre1 result --------");
List list = getAllGenre1();
for (Iterator it = list.iterator(); it.hasNext();) {
Genre bean = (Genre) it.next();
System.out.println("ID : " + bean.getId());
System.out.println("NAME : " + bean.getName());
}
}
/**
* 方法2
*/
public List getAllGenre2() {
StringBuffer sqlBuffer = null;
final List list = new ArrayList();
sqlBuffer = new StringBuffer();
sqlBuffer.append("SELECT * FROM mytable ORDER BY ID");
JdbcTemplate jt = new JdbcTemplate(dataSource);
Object obj = jt.query(sqlBuffer.toString(), new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException,
DataAccessException {
while (rs.next()) {
Genre bean = new Genre();
bean.setId(rs.getLong("ID"));
bean.setName(rs.getString("NAME"));
list.add(bean);
}
return list;
}
});
return (List) obj;
}
public void testGetAllGenre2() {
System.out.println("------- getAllGenre2 result --------");
List list = getAllGenre2();
for (Iterator it = list.iterator(); it.hasNext();) {
Genre bean = (Genre) it.next();
System.out.println("ID : " + bean.getId());
System.out.println("NAME : " + bean.getName());
}
}
/**
* 方法3
*/
public void testGetAllGenre3() {
System.out.println("------- getAllGenre3 result --------");
GenreQuery genreQuery = new GenreQuery(dataSource);
List list = genreQuery.execute();//这里如果有参数,可以参考API文档设置
for (Iterator it = list.iterator(); it.hasNext();) {
Genre bean = (Genre) it.next();
System.out.println("ID : " + bean.getId());
System.out.println("NAME : " + bean.getName());
}
}
}
测试结果如下:
[align=left]2005-10-09 09:21:31,316 INFO [org.springframework.jdbc.datasource.DriverManagerDataSource] - Loaded JDBC driver: oracle.jdbc.OracleDriver[/align][align=left]------- getAllGenre1 result --------[/align][align=left]ID : 1[/align][align=left]NAME : Rock[/align][align=left]ID : 2[/align][align=left]NAME : Ballet[/align][align=left]ID : 3[/align][align=left]NAME : Theatre[/align][align=left]ID : 4[/align][align=left]NAME : Classical[/align][align=left]ID : 5[/align][align=left]NAME : Musical[/align][align=left]ID : 6[/align][align=left]NAME : Opera[/align][align=left]2005-10-09 09:21:32,753 INFO [org.springframework.jdbc.datasource.DriverManagerDataSource] - Loaded JDBC driver: oracle.jdbc.OracleDriver[/align][align=left]------- getAllGenre2 result --------[/align][align=left]ID : 1[/align][align=left]NAME : Rock[/align][align=left]ID : 2[/align][align=left]NAME : Ballet[/align][align=left]ID : 3[/align][align=left]NAME : Theatre[/align][align=left]ID : 4[/align][align=left]NAME : Classical[/align][align=left]ID : 5[/align][align=left]NAME : Musical[/align][align=left]ID : 6[/align][align=left]NAME : Opera[/align][align=left]2005-10-09 09:21:33,206 INFO [org.springframework.jdbc.datasource.DriverManagerDataSource] - Loaded JDBC driver: oracle.jdbc.OracleDriver[/align][align=left]------- getAllGenre3 result --------[/align][align=left]ID : 1[/align][align=left]NAME : Rock[/align][align=left]ID : 2[/align][align=left]NAME : Ballet[/align][align=left]ID : 3[/align][align=left]NAME : Theatre[/align][align=left]ID : 4[/align][align=left]NAME : Classical[/align][align=left]ID : 5[/align][align=left]NAME : Musical[/align][align=left]ID : 6[/align][align=left]NAME : Opera[/align]
说明:上述例子使用了三种query方法,因为这里为了方便测试所以在方法里使用了
JdbcTemplate jt = new JdbcTemplate(dataSource); 而在实际应用中我们
可以把JdbcQueryTest extends JdbcDaoSupport,这样例子里的jt可以替换为
getJdbcTemplate()。
相关文章推荐
- Professional Java Development with the Spring Framework学习笔记(1) - JdbcTemplate
- 学习spring的入门好书:Professional Java Development with the Spring Framework
- Professional Java Development with the Spring Framework
- Professional Java Development with the Spring Framework
- WMI005-WMI学习笔记(五)——Using WMI with the .NET Framework(.NET框架使用WMI)
- Java File类学习笔记5:FilenameFilter的几种基本用法
- Java学习之道:org.springframework.jdbc.core.JdbcTemplate
- Spring 注解方式进行事务管理的用法介绍详解【Java学习笔记】
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-004-使用NamedParameterJdbcTemplate
- java学习笔记2 - Spring Autowired之批量用法
- Spring 中的与 JdbcTemplate 相关的类的用法 学习笔记一
- Java学习笔记32:Spring整合mybatis使用
- org.springframework.dao.DuplicateKeyException: a different object with the same identifier value....
- Spring学习笔记1之IOC详解尽量使用注解以及java代码
- org.springframework.context.support 学习笔记
- 1. 笔记JAVA框架学习——Spring入门环境搭建及helloworld
- Spring framework IOC 学习笔记
- Sping 学习笔记10——Spring+Hibernate 加载映射文件几种方式
- Entity Framework with MySQL 学习笔记一(insert,update,delete)
- Spring学习笔记----JdbcTemplet和NamedParameterJdbcTemplate的使用