`
robinsoncrusoe
  • 浏览: 750784 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring DAO之JDBC

    博客分类:
  • JAVA
阅读更多
  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 Data JDBC与JDBC的区别

    集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块(如Spring MVC和Spring Security)与之良好集成,可以构建更复杂的Web应用。例如,Spring MVC提供了模型-视图-控制器架构,使业务逻辑...

    spring-jdbc-dao

    《Spring JDBC DAO详解》 在Java开发中,Spring框架以其强大的功能和易用性深受开发者喜爱,其中Spring JDBC模块提供了对数据库操作的支持。Spring JDBC DAO(Data Access Object)模式是Spring提供的一种数据库...

    spring对jdbc的支持jar包

    例如,Hibernate或MyBatis可以通过Spring的DAO支持进行集成,实现更高级的对象关系映射。 总的来说,Spring对JDBC的支持使得数据库操作更加高效、安全且易于维护。它提供了丰富的API和抽象,帮助开发者避免了繁琐的...

    Spring mvc、 Spring、 Spring jdbc 整合实例源码

    5. **数据访问层(DAO)**:处理数据库操作,通常使用Spring JDBC或JPA(Java Persistence API)来实现。Spring JDBC通过JdbcTemplate或NamedParameterJdbcTemplate提供简洁的SQL执行方式。 6. **视图(View)**:...

    Spring mvc + Spring + Spring jdbc 整合 demo

    4. **DAO层**:DAO(Data Access Object)层负责与数据库的交互,通常使用Spring JDBC的Template类来执行SQL查询。这里可以找到与特定表操作相关的接口和实现。 5. **模型对象(Model)**:这些对象代表了数据库中...

    Spring mvc + Spring + Spring jdbc 整合实例源码

    《Spring MVC + Spring + Spring JDBC 整合实例详解》 在Java Web开发中,Spring框架因其强大的功能和灵活的设计而备受推崇。Spring MVC、Spring核心模块以及Spring JDBC是Spring框架中的三大重要组成部分,它们...

    spring-data-jdbc-repository, Spring Data JDBC泛型DAO实现.zip

    spring-data-jdbc-repository, Spring Data JDBC泛型DAO实现 Spring Data JDBC泛型DAO实现查看正在积极开发和维护的 jirutka/spring-data-jdbc-repository fork 。 不再支持这里存储库。本项目的目的是为基于 ...

    Spring DAO

    ### Spring DAO 概述 ...总之,Spring DAO 框架结合Spring IoC容器与AOP框架所提供的功能,可以极大地简化JDBC的运用方式,并轻松实现事务管理等功能。这种设计不仅提高了开发效率,还保证了代码的可读性和可维护性。

    SpringMVC + Spring + SpringJDBC整合demo

    SpringMVC、Spring和SpringJDBC是Java开发中非常重要的三个框架,它们分别负责Web层、业务层和服务层的管理。这个"SpringMVC + Spring + SpringJDBC整合demo"是一个完整的示例项目,旨在帮助开发者理解如何将这三个...

    Spring+Spring MVC+Spring JDBC+MySql实现简单登录注册

    在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...

    Spring-JDBC整合-MySQL8、java8版本

    Spring JDBC模块是Spring框架对Java数据库连接(JDBC)的一层抽象,它简化了数据库操作,通过提供模板类和 dao 支持来减少样板代码。Spring JDBC 提供了 JdbcTemplate 和 NamedParameterJdbcTemplate,这两个工具类...

    struts1+spring2.5.6+jdbc配置

    4. 在Spring的`applicationContext.xml`中配置Bean,包括Action、Service以及数据访问对象(DAO)。 5. 使用Spring的JdbcTemplate或NamedParameterJdbcTemplate编写数据库操作代码。 6. 配置Spring的事务管理,可以...

    springboot,jpa,spring data,jdbc template使用代码

    JdbcTemplate是Spring提供的一个简单但强大的JDBC抽象层,它避免了手动管理数据库连接、关闭资源等繁琐工作。通过`JdbcTemplate`,我们可以方便地执行SQL语句,处理结果集,同时它还提供了事务管理的支持。虽然...

    spring与JDBC集成Demo

    这个“spring与JDBC集成Demo”是一个典型的示例,旨在帮助初学者理解和实践 Spring 如何与 JDBC 结合使用。 在 Spring 中,JDBC 集成主要包括以下几个关键知识点: 1. **JdbcTemplate**:这是 Spring 提供的一个...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    Spring MVC、Spring 和 Spring JDBC 是Java开发中非常重要的三大框架,它们构成了企业级应用的基石。Spring MVC 是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring框架则提供了...

    ifunsu封装基于springjdbc的dao层

    ifunsu封装基于springjdbc的dao层,具体用法请看本站博客http://blog.csdn.net/ifunsu 。

    spring4 、 springmvc4.2、springjdbc

    4. 编写业务逻辑:创建控制器、服务和DAO层的类,使用Spring的注解如@Controller、@Service、@Repository等进行配置。 5. 数据库连接:使用JdbcTemplate或更高级的JPA、MyBatis等工具与数据库交互。 6. 测试:编写...

    ifunsu封装基于springjdbc的dao层api

    标题"ifunsu封装基于springjdbc的dao层api"指的是一个特定的项目或库,名为ifunsu,它已经对Spring JDBC进行了封装,以创建更易用的数据访问对象(DAO)层API。DAO层是应用程序中负责与数据库进行交互的部分,通常...

    spring中使用JDBC

    `JdbcTemplate`是Spring中最常用的数据访问抽象,它封装了JDBC的核心功能,如执行SQL语句、处理结果集、管理事务等,同时提供了异常转换机制,将低层次的JDBC异常转换为高层次的Spring DAO异常,使得异常处理更加...

Global site tag (gtag.js) - Google Analytics