Spring使用JdbcTemplate操作数据库首先,假设如下SQL表中有数据username=test1,passwd=test1,address=test1
CREATE TABLE `login` (
`username` varchar(10) default NULL,
`passwd` varchar(10) default NULL,
`address` varchar(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/javaee</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>1234</value>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="personDAO" class="SpringJDBCSupport.ReadData.PersonDAO">
<property name="jdbcTemplate">
<ref local="jdbcTemplate"/>
</property>
</bean>
</beans>
JavaBean:
package SpringJDBCSupport.ReadData;
import com.mysql.jdbc.Driver;
public class Person ...{
private String name;
private String password;
private String address;
public Person()...{
}
public Person(String name,String password,String address)...{
this.name=name;
this.password=password;
this.address=address;
}
public String getAddress() ...{
return address;
}
public void setAddress(String address) ...{
this.address = address;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
public String toString()...{
return this.getName()+"-"+this.getPassword()+"-"+this.getAddress();
}
}
DAO:
其中getPersonByRowCallbackHandler方法根据username获得person对象
package SpringJDBCSupport.ReadData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
public class PersonDAO ...{
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() ...{
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) ...{
this.jdbcTemplate = jdbcTemplate;
}
public int insertPersonUseUpdate(Person person)...{
String sql="insert into login values(?,?,?)";
Object[] params=new Object[]...{
person.getName(),
person.getPassword(),
person.getAddress()
};
return this.getJdbcTemplate().update(sql,params);
}
public int insertPersonUseExecute(Person person)...{
String sql="insert into login values(?,?,?)";
Object[] params=new Object[]...{
person.getName(),
person.getPassword(),
person.getAddress()
};
int[] types=new int[]...{
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR
};
return this.getJdbcTemplate().update(sql,params,types);
}
public int[] updatePersonUseBatchUpdate( final List persons)...{
String sql="insert into login values(?,?,?)";
BatchPreparedStatementSetter setter=null;
setter=new BatchPreparedStatementSetter()...{
public int getBatchSize()...{
return persons.size();
}
public void setValues(PreparedStatement ps,int index) throws SQLException...{
Person person=(Person)persons.get(index);
ps.setString(1,person.getName());
ps.setString(2,person.getPassword());
ps.setString(3,person.getAddress());
}
};
return this.getJdbcTemplate().batchUpdate(sql,setter);
}
public Person getPersonByRowCallbackHandler(String username)...{
String sql="select * from login where username=?";
final Person person=new Person();
final Object params[]=new Object[]...{username};
this.getJdbcTemplate().query(sql,params,new RowCallbackHandler()...{
public void processRow(ResultSet rs)throws SQLException...{
person.setName(rs.getString("username"));
person.setPassword(rs.getString("passwd"));
person.setAddress(rs.getString("address"));
}
});
return person;
}
}
测试代码:
package SpringJDBCSupport.ReadData;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class TestJDBCTemplate ...{
public static String filePath="";
public static BeanFactory factory=null;
public static void main(String[] args) ...{
filePath=System.getProperty("user.dir")+File.separator+"SpringJDBCSupport"+File.separator+"ReadData"+File.separator+"hello.xml";
factory=new XmlBeanFactory(new FileSystemResource(filePath));
PersonDAO personDAO=(PersonDAO)factory.getBean("personDAO");
/**//*
* 准备数据
*/
Person p1=new Person("test1","test1","test1");
Person p2=new Person("test2","test2","test2");
Person p3=new Person("test3","test3","test3");
Person p4=new Person("test4","test4","test4");
Person p5=new Person("test5","test5","test5");
List persons=new ArrayList();
persons.add(p3);
persons.add(p4);
persons.add(p5);
//使用jdbcTemplate.update方式
// personDAO.insertPersonUseUpdate(p1);
//使用jdbcTemplate.execute方式
// personDAO.insertPersonUseExecute(p2);
// //使用jdbcTemplate批处理方式
// personDAO.updatePersonUseBatchUpdate(persons);
//使用RowCallbackHandler执行一次查询,并打印person信息
System.out.println(personDAO.getPersonByRowCallbackHandler("test1"));
}
}
运行结果:
test1-test1-test1
分享到:
相关推荐
本示例代码将展示如何在Spring环境中使用JDBC进行数据的增删改查操作,并对比它与原生JDBC以及ORM(Object-Relational Mapping)框架如Hibernate或MyBatis的差异。 首先,让我们深入理解Spring JDBC的核心概念: 1...
这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...
首先,Spring JDBC模板是Spring框架中的一个核心组件,它为开发者提供了一种简化JDBC操作的方式。传统的JDBC编程涉及大量的样板代码,如打开和关闭数据库连接、创建和执行SQL语句等,而Spring JDBC模板通过抽象这些...
使用JdbcTemplate,你可以避免编写大量重复的JDBC模板代码,如关闭连接、处理结果集等。例如,一个简单的查询操作可以通过传递SQL语句和RowMapper实现: ```java String sql = "SELECT * FROM users WHERE id = ?";...
JdbcTemplate是Spring JDBC的基础,它提供了模板方法来处理常见的JDBC任务,如执行SQL查询、更新、存储过程等。使用JdbcTemplate可以避免手动管理连接、预编译语句、结果集处理等繁琐工作,从而降低出错的可能性。 ...
这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...
Spring JDBC提供了一个JdbcTemplate类,它是对JDBC API的抽象,它通过模板方法减少了重复的JDBC代码,如打开和关闭连接、处理结果集等。JdbcTemplate提供了各种方法,如update()用于执行SQL更新,query()用于查询...
【标题】"maven-springMVC-springJDBC-Demo"是一个综合性的项目示例,它演示了如何使用Maven、Spring MVC和Spring JDBC在Java Web开发中构建一个简单的应用。这个Demo旨在帮助开发者理解这三大技术的集成与协同工作...
同时,还可以参考网络资源,如“史上最全最强SpringMVC详细示例实战教程”和“SpringMVC + Spring + SpringJDBC整合”的文档,学习如何创建基于Maven的Web项目,以及如何在IDEA中添加和管理jar包。 总之,SpringMVC...
SpringJDBC是Spring框架的一部分,它简化了传统的JDBC编程模型,通过提供模板方法和回调机制,使得数据库操作更加容易。SpringJDBC提供了一层抽象,可以避免大量重复的JDBC代码,如打开和关闭连接、处理结果集等,使...
1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...
在这个主题下,我们将深入探讨Spring JDBC的核心概念、配置、以及如何进行基本的数据库交互。 一、Spring JDBC概述 Spring JDBC通过JdbcTemplate和NamedParameterJdbcTemplate两个核心类,简化了传统JDBC的代码,...
JdbcTemplate 是最基本的 JDBC 模板,提供了基本的数据库操作方法。NamedParameterJdbcTemplate 能够在执行查询时,把值绑定到 SQL里的命名参数。SimpleJdbcTemplate 利用 Java5 的特性,比如自动装箱,generic 和可...
本示例提供的"spring3+springMVC3+springJDBC3+jQuery easyui"就是一个经典组合,适用于开发高效、可维护的后端服务和用户友好的前端界面。让我们逐一深入探讨这些技术的细节。 首先,Spring框架(版本3)是Java...
在这个"springJdbcDemo11_java_springjdbc_"项目中,我们将深入探讨Spring集成JDBC的基本概念、配置和核心组件,以及如何通过实例快速上手并理解其工作原理。 1. **Spring JDBC简介** Spring JDBC模块是为了简化...
在本文中,我们将深入探讨Spring JDBC的核心概念、基本操作以及其在实际应用中的优势。 1. **Spring JDBC概述** Spring JDBC是Spring对Java数据库连接(JDBC)API的封装,旨在减少编写传统JDBC代码的繁琐过程,...
3. **Service层**:业务逻辑处理,如`UserService.java`,可能包含了对数据库的操作,通过SpringJDBC的模板方法执行SQL。 4. **DAO层**:数据库访问对象,如`UserDAO.java`,通常包含JdbcTemplate或...
本示例将深入探讨如何使用Spring JDBC与MySQL数据库进行集成和操作。以下是相关的关键知识点: 1. **Spring JDBC模块**: Spring JDBC是Spring框架中的一个核心模块,它为Java数据库连接(JDBC)提供了一种更高级别...
总结,Spring JDBC是Spring框架中用于数据库操作的强大工具,它提供了抽象的JDBC模板、事务管理、数据源配置以及便捷的数据转换功能。通过将Spring JDBC引入项目,可以显著提高代码质量,减少手动处理JDBC的繁琐工作...
在这个名为 "spring3jdbc" 的项目中,我们可以推测它是一个使用 Spring 3.x 版本的 MVC 结构与 Spring JDBC 集成的示例。Spring 3.x 是 Spring 框架的一个较早版本,尽管如此,它仍然包含了许多现代 Web 开发所需的...