- 浏览: 750784 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lengzl:
请问,那个Node 是哪个包里面的类?
JAVA 二叉树的递归和非递归遍历 -
gongchuangsu:
总结的很好,感谢感谢
JAVA 二叉树的递归和非递归遍历 -
Caelebs:
666666666 居然是10年发的,难怪截屏自动保存的名字是 ...
截图工具 -
jijiqw:
是注解不是注释。。。
Spring @Transactional (一) -
letueo:
[b][b][b][b][b][b][b][b][b][b][ ...
Spring @Transactional (一)
Spring DAO之JDBC
Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。
为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他配置信息。
Dao支持类:
JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。
HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 HibernateTemplate。也可以选择直接通过 提供一个HibernateTemplate来初始化, 这样就可以重用后者的设置,例如SessionFactory, flush模式,异常翻译器(exception translator)等等。
JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。
JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate。
本节主要讨论Sping对JdbcDaoSupport的支持。
下面是个例子:
drop table if exists user;
/* Table: user
create table user
(
id bigint AUTO_INCREMENT not null,
name varchar(24),
age int,
primary key (id)
);
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:34:36<br>
* <b>Note</b>: DAO接口
*/
public interface IUserDAO {
public void insert(User user);
public User find(Integer id);
}
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 13:53:56<br>
* <b>Note</b>: 基类DAO,提供了数据源注入
*/
public class BaseDAO {
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:36:04<br>
* <b>Note</b>: DAO实现
*/
public class UserDAO extends BaseDAO implements IUserDAO {
public JdbcTemplate getJdbcTemplate(){
return new JdbcTemplate(getDataSource());
}
public void insert(User user) {
String name = user.getName();
int age = user.getAge().intValue();
// jdbcTemplate.update("INSERT INTO user (name,age) "
// + "VALUES('" + name + "'," + age + ")");
String sql = "insert into user(name,age) values(?,?)";
getJdbcTemplate().update(sql,new Object[]{name,age});
}
public User find(Integer id) {
List rows = getJdbcTemplate().queryForList(
"SELECT * FROM user WHERE id=" + id.intValue());
Iterator it = rows.iterator();
if (it.hasNext()) {
Map userMap = (Map) it.next();
Integer i = new Integer(userMap.get("id").toString());
String name = userMap.get("name").toString();
Integer age = new Integer(userMap.get("age").toString());
User user = new User();
user.setId(i);
user.setName(name);
user.setAge(age);
return user;
}
return null;
}
}
<?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" singleton="true">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/springdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>leizhimin</value>
</property>
</bean>
<bean id="baseDAO" class="com.lavasoft.springnote.ch05_jdbc03_temp.BaseDAO" abstract="true">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="userDAO"
class="com.lavasoft.springnote.ch05_jdbc03_temp.UserDAO" parent="baseDAO">
</bean>
</beans>
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:59:18<br>
* <b>Note</b>: 测试类,客户端
*/
public class SpringDAODemo {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("D:\\_spring\\src\\com\\lavasoft\\springnote\\ch05_jdbc03_temp\\bean-jdbc-temp.xml");
User user = new User();
user.setName("hahhahah");
user.setAge(new Integer(22));
IUserDAO userDAO = (IUserDAO) context.getBean("userDAO");
userDAO.insert(user);
user = userDAO.find(new Integer(1));
System.out.println("name: " + user.getName());
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
log4j:WARN Please initialize the log4j system properly.
name: jdbctemplate
Process finished with exit code 0
Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。
为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他配置信息。
Dao支持类:
JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。
HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 HibernateTemplate。也可以选择直接通过 提供一个HibernateTemplate来初始化, 这样就可以重用后者的设置,例如SessionFactory, flush模式,异常翻译器(exception translator)等等。
JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。
JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate。
本节主要讨论Sping对JdbcDaoSupport的支持。
下面是个例子:
drop table if exists user;
/* Table: user
create table user
(
id bigint AUTO_INCREMENT not null,
name varchar(24),
age int,
primary key (id)
);
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:34:36<br>
* <b>Note</b>: DAO接口
*/
public interface IUserDAO {
public void insert(User user);
public User find(Integer id);
}
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 13:53:56<br>
* <b>Note</b>: 基类DAO,提供了数据源注入
*/
public class BaseDAO {
private DataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:36:04<br>
* <b>Note</b>: DAO实现
*/
public class UserDAO extends BaseDAO implements IUserDAO {
public JdbcTemplate getJdbcTemplate(){
return new JdbcTemplate(getDataSource());
}
public void insert(User user) {
String name = user.getName();
int age = user.getAge().intValue();
// jdbcTemplate.update("INSERT INTO user (name,age) "
// + "VALUES('" + name + "'," + age + ")");
String sql = "insert into user(name,age) values(?,?)";
getJdbcTemplate().update(sql,new Object[]{name,age});
}
public User find(Integer id) {
List rows = getJdbcTemplate().queryForList(
"SELECT * FROM user WHERE id=" + id.intValue());
Iterator it = rows.iterator();
if (it.hasNext()) {
Map userMap = (Map) it.next();
Integer i = new Integer(userMap.get("id").toString());
String name = userMap.get("name").toString();
Integer age = new Integer(userMap.get("age").toString());
User user = new User();
user.setId(i);
user.setName(name);
user.setAge(age);
return user;
}
return null;
}
}
<?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" singleton="true">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/springdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>leizhimin</value>
</property>
</bean>
<bean id="baseDAO" class="com.lavasoft.springnote.ch05_jdbc03_temp.BaseDAO" abstract="true">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="userDAO"
class="com.lavasoft.springnote.ch05_jdbc03_temp.UserDAO" parent="baseDAO">
</bean>
</beans>
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-4-22 15:59:18<br>
* <b>Note</b>: 测试类,客户端
*/
public class SpringDAODemo {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("D:\\_spring\\src\\com\\lavasoft\\springnote\\ch05_jdbc03_temp\\bean-jdbc-temp.xml");
User user = new User();
user.setName("hahhahah");
user.setAge(new Integer(22));
IUserDAO userDAO = (IUserDAO) context.getBean("userDAO");
userDAO.insert(user);
user = userDAO.find(new Integer(1));
System.out.println("name: " + user.getName());
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
log4j:WARN Please initialize the log4j system properly.
name: jdbctemplate
Process finished with exit code 0
发表评论
-
Servlet上传文件
2012-02-07 23:58 1503准备工作:要到http://commons.apache.or ... -
成为Java高手需要达到的25个学习目标--经典
2012-01-29 16:07 1360本文将告诉你学习Java需 ... -
Timer, Quartz 和 Spring 实现作业调度
2011-11-28 15:43 1202一、java.util.Timer ... -
Java 产生不重复的随机数
2011-06-22 23:32 2373int numberCount = 6; ... -
Date类学习总结(Calendar Date 字符串 相互转换 格式化)
2011-06-20 16:12 1680Date类学习总结 1.计算某一月份的最大天数 ... -
jsp中的cookie用法小实例
2011-06-20 00:13 2499这个小实例有三个页面 index.jsp页面内容如下: Y ... -
JS实现简单的增删改查
2011-06-19 23:41 12995<%@ page language="ja ... -
Jsp 动态显示系统时间
2011-06-19 23:24 4910<%@ page language=" ... -
java 动态显示时间
2011-06-19 23:13 4072import java.util.Date; p ... -
js 动态显示时间
2011-06-19 22:53 1844<%@ page language=" ... -
HTML 显示系统时间
2011-06-19 22:13 7899代码1:(显示静态时间) <script type=& ... -
JavaScript 动态显示系统时间
2011-06-19 19:36 2098JavaScript 动态显示系统时间 <html ... -
两例JavaScript 获取当前系统日期和时间
2011-06-19 19:20 1266两例JavaScript 获取当前系统日期和时间 QUOTE ... -
java五种JSP页面跳转方法详解
2011-06-19 17:08 14841. RequestDispatcher.forward() ... -
Java Object方法
2011-06-19 16:47 1385package com.abin.test.connectio ... -
Java 数组,List,Itarator循环
2011-06-19 16:01 2326package com.abin.test.connect ... -
JAVA DBClass操作数据库,这样算不算单列模式
2011-06-19 14:53 1266到底怎样才算单列模式,单列模式事什么概念 package c ... -
Oracle日期函数集锦
2011-06-16 20:55 958Oracle日期函数集锦(一) 一、 常用日期数据格式 1 ... -
java 页面传送数组
2011-06-15 14:56 26081.可以通过嵌入java代码调用session或者reques ... -
java Calendar当前时间
2011-06-14 13:40 1704Calendar c = Calendar.getIn ...
相关推荐
集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块(如Spring MVC和Spring Security)与之良好集成,可以构建更复杂的Web应用。例如,Spring MVC提供了模型-视图-控制器架构,使业务逻辑...
《Spring JDBC DAO详解》 在Java开发中,Spring框架以其强大的功能和易用性深受开发者喜爱,其中Spring JDBC模块提供了对数据库操作的支持。Spring JDBC DAO(Data Access Object)模式是Spring提供的一种数据库...
例如,Hibernate或MyBatis可以通过Spring的DAO支持进行集成,实现更高级的对象关系映射。 总的来说,Spring对JDBC的支持使得数据库操作更加高效、安全且易于维护。它提供了丰富的API和抽象,帮助开发者避免了繁琐的...
5. **数据访问层(DAO)**:处理数据库操作,通常使用Spring JDBC或JPA(Java Persistence API)来实现。Spring JDBC通过JdbcTemplate或NamedParameterJdbcTemplate提供简洁的SQL执行方式。 6. **视图(View)**:...
4. **DAO层**:DAO(Data Access Object)层负责与数据库的交互,通常使用Spring JDBC的Template类来执行SQL查询。这里可以找到与特定表操作相关的接口和实现。 5. **模型对象(Model)**:这些对象代表了数据库中...
《Spring MVC + Spring + Spring JDBC 整合实例详解》 在Java Web开发中,Spring框架因其强大的功能和灵活的设计而备受推崇。Spring MVC、Spring核心模块以及Spring JDBC是Spring框架中的三大重要组成部分,它们...
spring-data-jdbc-repository, Spring Data JDBC泛型DAO实现 Spring Data JDBC泛型DAO实现查看正在积极开发和维护的 jirutka/spring-data-jdbc-repository fork 。 不再支持这里存储库。本项目的目的是为基于 ...
### Spring DAO 概述 ...总之,Spring DAO 框架结合Spring IoC容器与AOP框架所提供的功能,可以极大地简化JDBC的运用方式,并轻松实现事务管理等功能。这种设计不仅提高了开发效率,还保证了代码的可读性和可维护性。
SpringMVC、Spring和SpringJDBC是Java开发中非常重要的三个框架,它们分别负责Web层、业务层和服务层的管理。这个"SpringMVC + Spring + SpringJDBC整合demo"是一个完整的示例项目,旨在帮助开发者理解如何将这三个...
在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...
Spring JDBC模块是Spring框架对Java数据库连接(JDBC)的一层抽象,它简化了数据库操作,通过提供模板类和 dao 支持来减少样板代码。Spring JDBC 提供了 JdbcTemplate 和 NamedParameterJdbcTemplate,这两个工具类...
4. 在Spring的`applicationContext.xml`中配置Bean,包括Action、Service以及数据访问对象(DAO)。 5. 使用Spring的JdbcTemplate或NamedParameterJdbcTemplate编写数据库操作代码。 6. 配置Spring的事务管理,可以...
JdbcTemplate是Spring提供的一个简单但强大的JDBC抽象层,它避免了手动管理数据库连接、关闭资源等繁琐工作。通过`JdbcTemplate`,我们可以方便地执行SQL语句,处理结果集,同时它还提供了事务管理的支持。虽然...
这个“spring与JDBC集成Demo”是一个典型的示例,旨在帮助初学者理解和实践 Spring 如何与 JDBC 结合使用。 在 Spring 中,JDBC 集成主要包括以下几个关键知识点: 1. **JdbcTemplate**:这是 Spring 提供的一个...
Spring MVC、Spring 和 Spring JDBC 是Java开发中非常重要的三大框架,它们构成了企业级应用的基石。Spring MVC 是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring框架则提供了...
ifunsu封装基于springjdbc的dao层,具体用法请看本站博客http://blog.csdn.net/ifunsu 。
4. 编写业务逻辑:创建控制器、服务和DAO层的类,使用Spring的注解如@Controller、@Service、@Repository等进行配置。 5. 数据库连接:使用JdbcTemplate或更高级的JPA、MyBatis等工具与数据库交互。 6. 测试:编写...
标题"ifunsu封装基于springjdbc的dao层api"指的是一个特定的项目或库,名为ifunsu,它已经对Spring JDBC进行了封装,以创建更易用的数据访问对象(DAO)层API。DAO层是应用程序中负责与数据库进行交互的部分,通常...
`JdbcTemplate`是Spring中最常用的数据访问抽象,它封装了JDBC的核心功能,如执行SQL语句、处理结果集、管理事务等,同时提供了异常转换机制,将低层次的JDBC异常转换为高层次的Spring DAO异常,使得异常处理更加...