- 浏览: 206666 次
- 性别:
- 来自: 紫禁城
文章分类
最新评论
-
a1439226817:
<!doctype html><html l ...
发布一个支持N级下拉列表联动的控件 -
a1439226817:
也不高个测试的demo,别人怎么用啊
发布一个支持N级下拉列表联动的控件 -
davaidgao:
不全啊,这是
Spring3.x权威开发指南 -
caizi12:
对于map绑定很是不方便,现在的做法,需要创建一User类,再 ...
浅谈 SpringMVC 数据绑定 -
joeyhuang:
不全啊..
Spring3.x权威开发指南
一个使用JdbcTemplate增加一组数据的完整的例子,简单的代码不再解释:
1) 首先来创建一个数据库和表,这里用的是Sql server数据库:
create database Human
go
create table Person
(
id int primary key,
firstName varchar(20),
lastName varchar(20)
)
go
2) 创建一个Person类:
package cn.itcast;
public class Person {
private int id;
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
3) 创建一个 MyBatchPreparedStatementSetter 类。此类实现 BatchPreparedStatementSetter 接口。
package cn.itcast;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
public class MyBatchPreparedStatementSetter implements
BatchPreparedStatementSetter {
//这里用于测试的是一组Person对象。
List<Person> persons;
public void setPersons(List<Person> persons) {
this.persons = persons;
}
//重写 BatchPreparedStatementSetter 的 setValues() 和 getBatchSize() 方法。
//setValues() 方法用于设置 sql 语句里面的参数
public void setValues(PreparedStatement ps, int index) throws SQLException {
Person person = persons.get(index);
ps.setInt(1, person.getId());
ps.setString(2, person.getFirstName());
ps.setString(3, person.getLastName());
}
//getBatchSize()返回这一组数据的大小。
public int getBatchSize() {
return persons.size();
}
}
4) 创建一个 MyJdbcTemplate 类:
package cn.itcast;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
public class MyJdbcTemplate {
//定义一个 JdbcTemplate 对象,用于调用 batchUpdate()方法。
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public int[] updatePersons() {
//从xml配置文件中读取出注册好的 MyBatchPreparedStatementSetter 对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
String sql = "insert into Person values (?,?,?)";
MyBatchPreparedStatementSetter setter = (MyBatchPreparedStatementSetter)
context
.getBean("myBatchPreparedStatementSetter");
return jdbcTemplate.batchUpdate(sql, setter);
}
}
5) 一个客户端的类:
package cn.itcast;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
private static Log log = LogFactory.getLog(Client.class);
public static void main(String[] args) {
ApplicationContext context = null;
//从xml文件中读取出已经注册好的MyJdbcTemplate对象:
context = new ClassPathXmlApplicationContext("/applicationContext.xml");
MyJdbcTemplate myJdbcTemplate = (MyJdbcTemplate) context
.getBean("myJdbcTemplate");
//调用MyJdbcTemplate的updatePersons()方法。此方法返回一个整型数组,数组里的每一个数如果是 1
就说明sql语句执行成功。
int[] arr = myJdbcTemplate.updatePersons();
for (int n : arr) {
if (n == 1) {
log.info("增加成功");
}
}
}
}
6) 数据库连接配置信息的属性文件 jdbc.properties:
url=jdbc:sqlserver://127.0.0.1:1433;database=Study
driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
username=sa
password=
7) XML 文件 applicationContext.xml:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring
-beans.dtd">
<beans>
//注册一个PropertyPlaceholderConfigurer,此Bean的location属性告诉Spring去哪找配置信息。
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>jdbc.properties</value>
</property>
</bean>
//注册一个DataSource,此例用的是Spring自带的DriverManagerDataSource
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${driverClassName}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
//注册一个JdbcTemplate,此Bean的dataSource属性引用上面的dataSource
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
//注册一个我们自定义的MyJdbcTemplate,此Bean的jdbcTemplate属性引用上面的jdbcTemplate
<bean id="myJdbcTemplate" class="cn.itcast.MyJdbcTemplate">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
//注册5个Person对象
<bean id="person1" class="cn.itcast.Person">
<property name="id">
<value>1</value>
</property>
<property name="firstName">
<value>田</value>
</property>
<property name="lastName">
<value>三</value>
</property>
</bean>
<bean id="person2" class="cn.itcast.Person">
<property name="id">
<value>2</value>
</property>
<property name="firstName">
<value>常</value>
</property>
<property name="lastName">
<value>四</value>
</property>
</bean>
<bean id="person3" class="cn.itcast.Person">
<property name="id">
<value>3</value>
</property>
<property name="firstName">
<value>金</value>
</property>
<property name="lastName">
<value>五</value>
</property>
</bean>
<bean id="person4" class="cn.itcast.Person">
<property name="id">
<value>4</value>
</property>
<property name="firstName">
<value>徐</value>
</property>
<property name="lastName">
<value>六</value>
</property>
</bean>
<bean id="person5" class="cn.itcast.Person">
<property name="id">
<value>5</value>
</property>
<property name="firstName">
<value>张</value>
</property>
<property name="lastName">
<value>七</value>
</property>
</bean>
//注册一个MyBatchPreparedStatementSetter,设置它的persons属性,此属性是一个包含Person的List
,
//这里的就引用上面注册好的5个Person对象
<bean id="myBatchPreparedStatementSetter"
class="cn.itcast.MyBatchPreparedStatementSetter">
<property name="persons">
<list>
<ref bean="person1" />
<ref bean="person2" />
<ref bean="person3" />
<ref bean="person4" />
<ref bean="person5" />
</list>
</property>
</bean>
</beans>
8) Log4j配置文件log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="systemout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout" />
</appender>
<root>
<level value="info" />
<appender-ref ref="systemout" />
</root>
</log4j:configuration>
9)运行:
INFO - 增加成功
INFO - 增加成功
INFO - 增加成功
INFO - 增加成功
INFO - 增加成功
我们看到输出了5条增加成功的信息,
再来看看数据库中Person表:
select * from Person
1 田 三
2 常 四
3 金 五
4 徐 六
5 张 七
发表评论
-
浅谈 SpringMVC 数据绑定
2011-03-24 13:41 4654查看spring源码可以看出spring支持转换的数据类型: ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2010-08-23 16:39 838基于注解的配置有越来越流行的趋势,Spring 2 ... -
Spring3.x权威开发指南
2010-08-23 11:30 3120Spring3.x权威开发指南 -
几个Spring的小例子
2006-09-10 17:27 819一 .第一个Spring程序: 首先创建一个接口:packag ... -
Spring中创建切面
2006-09-11 15:39 1138一。创建切面:Spring中的通知类型有四种:Around:拦 ... -
对Bean和Bean工厂进行后处理
2006-09-19 09:23 8011.对Bean进行后处理,必须实现BeanPostProces ... -
使用数据库连接池和jdbc中调用存储过程
2006-09-22 15:21 1029数据库连接池:数据库连接不仅仅是在应用服务器与数据库之间建立一 ... -
Hibernate学习笔记
2006-10-12 20:43 650J2EE体系结构分为三层:1.表示层(JSP/Servlet) ... -
一个使用ibatis对数据库增删改查的例子
2006-10-28 22:29 1331一个使用ibatis对数据库增删改查的例子:这里用的开发环境是 ... -
ibatis和Spring整合的详细例子
2006-10-28 22:30 1025ibatis和Spring整合的详细例子,数据库用的是mysq ... -
Spring XML配置十二个最佳实践
2006-11-01 13:28 649Spring XML配置十二个最佳 ... -
Servlet的生命周期
2006-11-10 00:27 1159Servlet的生命周期 当 ... -
JSP Struts之HTML标签库详解
2006-11-28 21:50 863JSP Struts之HTML标签库详解 Struts提供 ... -
WebWork 入门示例
2006-12-07 00:12 726准备工作: Eclipse3.2 MyEclip ...
相关推荐
使用Spring JdbcTemplate的第一步是创建一个JdbcTemplate实例。这通常通过Spring的IoC容器(依赖注入)完成,将DataSource配置到JdbcTemplate中。例如: ```java @Autowired private DataSource dataSource; @Bean...
当在一个事务中执行多条SQL语句时,如果其中一个失败,所有操作都将回滚,确保数据的一致性。你可以通过`JdbcTemplate`的`execute`方法执行一组SQL操作,并在需要时捕获并处理异常。 5. **性能优化**:通过日志,...
`JdbcTemplate`的`batchUpdate`方法返回一个整数数组,其中每个元素表示相应批处理语句影响的行数。如果数据库不支持获取每条语句的更新计数,数组可能会包含null值。 批处理可以显著提高性能,特别是在需要插入...
这个Demo为学习和理解Struts、Spring和JdbcTemplate的集成提供了一个实际的例子,帮助开发者更好地掌握Java Web开发中的这些核心工具。通过实践,我们可以了解到如何在实际项目中有效地组合这些技术,提高代码的可...
在本文中,我们将深入探讨如何将SpringMVC与jdbcTemplate集成,同时利用Druid作为连接池,实现一个基于REST风格的简单CRUD应用。我们将主要关注以下知识点: 1. **SpringMVC框架**:SpringMVC是Spring框架的一个...
这个"spring 的简单例子工程"为初学者提供了一个全面的起点,涵盖了 Spring 框架中与数据库交互的基础知识,包括 JdbcTemplate 的使用、DataSource 配置,以及 Spring MVC 和注解驱动开发的基本概念。通过这个项目,...
在这个例子中,`@Transactional`注解告诉Spring为`grantPermissions`方法开启一个事务,所有在该方法内部的数据库操作都将在同一个事务中进行,从而确保了数据完整性。 总结来说,Spring的JdbcTemplate提供了一种...
以下是一个简单的`jdbcTemplate`使用示例: ```java @Autowired private DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate() { return new JdbcTemplate(dataSource); } public List<User> ...
这个例子旨在为初学者提供一个基于SSH的简单应用示例,帮助他们理解和掌握这三个框架的集成与使用。 Struts是MVC(Model-View-Controller)设计模式的一个实现,主要用于处理Web层的业务逻辑。它提供了一个灵活的...
Spring还包含了诸如数据访问、Web服务、安全控制等多个模块,形成了一个完整的应用开发生态。在Spring中,我们可以通过配置XML或者使用Java配置来实现DI,让Spring容器管理对象的生命周期和依赖关系。 结合...
这个例子展示了如何将这三个框架整合在一起,实现一个简单的图书管理系统的增删改操作。 **Struts2** 是一个基于MVC设计模式的Web应用框架,它提供了一种组织应用程序的方式,使得业务逻辑与展示层分离。Struts2的...
这个例子是一个实际的集成项目,旨在帮助初学者快速理解和应用SSH框架。 Struts2是MVC(模型-视图-控制器)设计模式的一个实现,主要负责处理HTTP请求,控制应用流程,以及与视图层进行交互。它通过Action类来接收...
使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和...
下面是一个简单的Spring Boot项目中使用Druid的例子: ```java @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DruidDataSource druid...
这个小例子可能是为了帮助初学者理解这三个技术如何协同工作来构建一个完整的Web应用程序。 1. **Spring框架**:Spring是Java领域最广泛使用的轻量级应用框架,提供了依赖注入(Dependency Injection, DI)和面向切...
SSH是Java开发中的一种经典框架组合,分别代表Struts2、Spring和...这个"SSH简单例子"提供了一个完整的示例,帮助开发者理解SSH框架的集成过程和分页功能的实现,对于学习和实战Java Web开发具有很高的参考价值。
这个"ssh2+ext demo例子"显然提供了一个实际的示例,演示了如何将Struts2、Spring、Hibernate以及EXT.js这四个关键组件集成到一个项目中。下面将详细解释这些技术以及它们在项目中的作用。 首先,Struts2是基于MVC...
在IT行业中,存储过程是数据库管理中的一个重要组成部分,它是一组预先编译的SQL语句集合,可以被多次调用,以提高数据库操作的效率。在Java开发中,经常需要与数据库进行交互,包括调用存储过程。本文将详细阐述...
在博文链接中,作者可能分享了一个使用Spring-JDBC的实际示例,虽然具体内容未给出,但我们可以探讨Spring-JDBC的一些关键特性: 1. **JdbcTemplate**: 这是Spring-JDBC的主要组件,它通过提供一组模板方法来执行...
在这个例子中,我们展示了如何使用`execute()`方法添加一个新的用户。通过传递一个匿名内部类实现`ConnectionCallback`接口,我们可以在回调方法`doInConnection()`中编写SQL语句和预编译参数。这样,JdbcTemplate会...