两种方法测试spring中的jdbc
JDBC是一个非常基础的数据存取API,spring对其进行简单的封装,
下面以sqlserver中自带的pubs数据库Authors表进行测试.
1):编写Authors.java,其每个对象对应于数据库中的一条记录
package jdbc;
public class Authors {
String lname=null;
String fname=null;
String phone=null;
String address=null;
public String getAddress() {
return address;
}
public String getFname() {
return fname;
}
public String getLname() {
return lname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setLname(String lname) {
this.lname = lname;
}
public void setFname(String fname) {
this.fname = fname;
}
public void setAddress(String address) {
this.address = address;
}
}
2):编写AuthorsQuery类
package jdbc;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.jdbc.object.MappingSqlQuery;
import javax.sql.DataSource;
/**
* <p>Title: 测试spring中的jdbc</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author hanker
* @version 1.0
*/
public class AuthorsQuery extends MappingSqlQuery {
public AuthorsQuery(DataSource ds) {
this.setDataSource(ds);
this.setSql("SELECT * FROM authors");
compile();
}
protected Object mapRow(ResultSet rs, int rownum) throws SQLException {
Authors po = new Authors();
po.setLname(rs.getString("au_lname"));
po.setFname(rs.getString("au_fname"));
po.setPhone(rs.getString("phone"));
po.setAddress(rs.getString("address"));
return po;
}
}
3:写spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--
- Application context definition for Petclinic on Hibernate.
-->
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></property>
<property name="url"><value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs;SelectMethod=Cursor</value></property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="AuthorsQuery" class="jdbc.AuthorsQuery" singleton="false">
<constructor-arg index="0"><ref bean="dataSource"/></constructor-arg>
</bean>
</beans>
4:写junit进行测试
package jdbc;
import junit.framework.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import java.util.List;
import java.util.Map;
/**
* <p>Title: 测试spring中的jdbc</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author hanker
* @version 1.0
*/
public class TestAuthorsQuery extends TestCase {
ApplicationContext ctx=null;
protected void setUp() throws Exception {
ctx
= new FileSystemXmlApplicationContext("D:\\work\\jpetstore\\src\\jdbc\\Context-jdbc.xml");
}
public void testQuery(){
System.out.println("[Test1....");
AuthorsQuery qry=(AuthorsQuery)ctx.getBean("AuthorsQuery");
List list = qry.execute();
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
Authors author=(Authors)list.get(i);
StringBuffer buf=new StringBuffer();
buf.append(author.getLname())
.append("|")
.append(author.getFname())
.append("|")
.append(author.getPhone())
.append("|")
.append(author.getAddress());
System.out.println(buf.toString());
}
}
}
}
5:编译运行,ok》是不是得到了你想要的结果
White|Johnson|408 496-7223|10932 Bigge Rd.
Green|Marjorie|415 986-7020|309 63rd St. #411
Carson|Cheryl|415 548-7723|589 Darwin Ln.
O'Leary|Michael|408 286-2428|22 Cleveland Av. #14
Straight|Dean|415 834-2919|5420 College Av.
Smith|Meander|913 843-0462|10 Mississippi Dr.
Bennet|Abraham|415 658-9932|6223 Bateman St.
Dull|Ann|415 836-7128|3410 Blonde St.
Gringlesby|Burt|707 938-6445|PO Box 792
Locksley|Charlene|415 585-4620|18 Broadway Av.
Greene|Morningstar|615 297-2723|22 Graybar House Rd.
Blotchet-Halls|Reginald|503 745-6402|55 Hillsdale Bl.
6:下面测试另处一种调jdbc的方法
编写AuthorsQuery2.java文件
package jdbc;
import java.util.List;
import org.springframework.context.ApplicationContextException;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
/**
* <p>Title: 测试spring中的jdbc</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author hanker
* @version 1.0
*/
public class AuthorsQuery2 extends JdbcDaoSupport {
public AuthorsQuery2() {
}
public List query(String sql) throws DataAccessException {
return this.getJdbcTemplate().queryForList(sql);
}
}
7:配置,在上面加入下面几行:
<bean id="AuthorsQuery2" class="jdbc.AuthorsQuery2">
<property name="dataSource"><ref local="dataSource"/></property>
</bean>
8:写junit.
在TestAuthorsQuery中加入函数
public void testQuery2(){
System.out.println("[Test2....");
AuthorsQuery2 qry=(AuthorsQuery2)ctx.getBean("AuthorsQuery2");
List list = qry.query("SELECT * FROM authors");
if(list!=null&&list.size()>0){
for(int i=0;i<list.size();i++){
Map map=(Map)list.get(i);
StringBuffer buf=new StringBuffer();
buf.append(map.get("au_lname") )
.append("|")
.append(map.get("au_fname"))
.append("|")
.append(map.get("phone"))
.append("|")
.append(map.get("address"));
System.out.println(buf.toString());
}
}
}
9:编译运行.以上代码经过测试,能够正常运行
分享到:
相关推荐
两种方法测试spring中的jdbc 两种方法测试spring中的jdbc
(1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口,编写BookShopDaoImp类实现该接口中的所有方法,并通过JUnit测试这些方法。 (2)(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是...
(1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口,编写BookShopDaoImp类实现该接口中的所有方法,并通过JUnit测试这些方法。 public interface BookShopDao { //根据书号获取书的单价 //...
Spring Boot实战与原理分析视频课程包含14-18,本视频教程为网络整理,如有侵权,请联系删除。谢谢 Spring Boot实战与原理分析视频课程 课程目录: 1 Spring Boot概述与课程...--两种方式演示服务的打包,部署,运行
本书共分为两卷。 第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 ...
同时讲解了xml和注解两种方式使用Spring的示例。通过Spring的入门程序介绍了Spring的 IoC 和 DI 的概念,介绍了Spring的基本模块。详细介绍了对象创建的细节和依赖注入的几种方式;介绍了如何使用注解完成Spring的...
本书共分为两卷。 第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 ...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之...在 IUserOperation 接口中增加方法:public List...
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...
12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...
12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...
12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...
使用spring + atomikos+druid配置的分布式事务demo,两种数据源配置方式都可以,使用junit测试没问题,案例中使用的mysql数据库是8.0.11版本,版本不同请自行修改pom.xml和jdbc.properties
HBase可以做哪些工作等 7-1 老板提出一个需求 7-2 技术选型 第8章 功能梳理与方案设计 对我们需要实现的对象存储服务功能点进行梳理,并设计制定对象存储服务的实现方案,这里我们会讨论两种不同设计方案的功能差异...
两种东西,其一是IBM微软数据产品为代表的,其二是Hadoop+Hive+Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储的数据上。 提供了命令行工具和...
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 A.控制反转(IOC)是什么呢? IOC:控制反转也叫依赖...
两种东西,其一是IBM微软数据产品为代表的,其二是Hadoop+Hive+Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储的数据上。 提供了命令行工具和...
介绍了事务的四大原则,并通过实例介绍数据库实现事务的方法,以及使用JDBC实现事务的方法。 2-1 事务原则与实现:事务 2-2 事务原则与实现:SQL事务 2-3 事务原则与实现:JDBC事务(上) 2-4 事务原则与实现:JDBC...
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。 select * from tb_category where id in (select ...
{8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section.8.5} {8.5.1}sleep与wait的差异}{124}{subsection.8.5.1} {8.6}IO阻塞}{126}{section....