`
shusanzhan
  • 浏览: 35270 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Spring JDBC模板基本操作示例

阅读更多
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示例代码

    本示例代码将展示如何在Spring环境中使用JDBC进行数据的增删改查操作,并对比它与原生JDBC以及ORM(Object-Relational Mapping)框架如Hibernate或MyBatis的差异。 首先,让我们深入理解Spring JDBC的核心概念: 1...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...

    Spring_jdbc模板相关jar包(连接文件版本:5.1.47)

    首先,Spring JDBC模板是Spring框架中的一个核心组件,它为开发者提供了一种简化JDBC操作的方式。传统的JDBC编程涉及大量的样板代码,如打开和关闭数据库连接、创建和执行SQL语句等,而Spring JDBC模板通过抽象这些...

    SpringJDBC训练素材.zip

    使用JdbcTemplate,你可以避免编写大量重复的JDBC模板代码,如关闭连接、处理结果集等。例如,一个简单的查询操作可以通过传递SQL语句和RowMapper实现: ```java String sql = "SELECT * FROM users WHERE id = ?";...

    Spring JDBC应用实例讲解

    JdbcTemplate是Spring JDBC的基础,它提供了模板方法来处理常见的JDBC任务,如执行SQL查询、更新、存储过程等。使用JdbcTemplate可以避免手动管理连接、预编译语句、结果集处理等繁琐工作,从而降低出错的可能性。 ...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...

    Spring JDBC实现代码

    Spring JDBC提供了一个JdbcTemplate类,它是对JDBC API的抽象,它通过模板方法减少了重复的JDBC代码,如打开和关闭连接、处理结果集等。JdbcTemplate提供了各种方法,如update()用于执行SQL更新,query()用于查询...

    maven-springMVC-springJDBC-Demo

    【标题】"maven-springMVC-springJDBC-Demo"是一个综合性的项目示例,它演示了如何使用Maven、Spring MVC和Spring JDBC在Java Web开发中构建一个简单的应用。这个Demo旨在帮助开发者理解这三大技术的集成与协同工作...

    java开发之SpringMVC + Spring + SpringJDBC整合.zip

    同时,还可以参考网络资源,如“史上最全最强SpringMVC详细示例实战教程”和“SpringMVC + Spring + SpringJDBC整合”的文档,学习如何创建基于Maven的Web项目,以及如何在IDEA中添加和管理jar包。 总之,SpringMVC...

    SpringMVC3 + SpringJDBC整合 源码。

    SpringJDBC是Spring框架的一部分,它简化了传统的JDBC编程模型,通过提供模板方法和回调机制,使得数据库操作更加容易。SpringJDBC提供了一层抽象,可以避免大量重复的JDBC代码,如打开和关闭连接、处理结果集等,使...

    Spring Data JDBC与JDBC的区别

    1. **自动配置**: Spring Boot通过自动配置,可以快速设置数据源和JDBC模板。 2. **Repository接口**: 开发者只需定义Repository接口,Spring会自动提供实现,无需编写繁琐的DAO层代码。 3. **ORM支持**: 尽管不如...

    Spring JDBC 增删改查

    在这个主题下,我们将深入探讨Spring JDBC的核心概念、配置、以及如何进行基本的数据库交互。 一、Spring JDBC概述 Spring JDBC通过JdbcTemplate和NamedParameterJdbcTemplate两个核心类,简化了传统JDBC的代码,...

    在Spring中使用JDBC和JDBC模板的讲解

    JdbcTemplate 是最基本的 JDBC 模板,提供了基本的数据库操作方法。NamedParameterJdbcTemplate 能够在执行查询时,把值绑定到 SQL里的命名参数。SimpleJdbcTemplate 利用 Java5 的特性,比如自动装箱,generic 和可...

    spring3+springMVC3+springJDBC3+jQuery easyui的运行环境

    本示例提供的"spring3+springMVC3+springJDBC3+jQuery easyui"就是一个经典组合,适用于开发高效、可维护的后端服务和用户友好的前端界面。让我们逐一深入探讨这些技术的细节。 首先,Spring框架(版本3)是Java...

    springJdbcDemo11_java_springjdbc_

    在这个"springJdbcDemo11_java_springjdbc_"项目中,我们将深入探讨Spring集成JDBC的基本概念、配置和核心组件,以及如何通过实例快速上手并理解其工作原理。 1. **Spring JDBC简介** Spring JDBC模块是为了简化...

    SpringJDBC入门Demo

    在本文中,我们将深入探讨Spring JDBC的核心概念、基本操作以及其在实际应用中的优势。 1. **Spring JDBC概述** Spring JDBC是Spring对Java数据库连接(JDBC)API的封装,旨在减少编写传统JDBC代码的繁琐过程,...

    SpringMVC + Spring + SpringJDBC整合demo

    3. **Service层**:业务逻辑处理,如`UserService.java`,可能包含了对数据库的操作,通过SpringJDBC的模板方法执行SQL。 4. **DAO层**:数据库访问对象,如`UserDAO.java`,通常包含JdbcTemplate或...

    spring jdbc mysql example

    本示例将深入探讨如何使用Spring JDBC与MySQL数据库进行集成和操作。以下是相关的关键知识点: 1. **Spring JDBC模块**: Spring JDBC是Spring框架中的一个核心模块,它为Java数据库连接(JDBC)提供了一种更高级别...

    SpringJdbc.rar

    总结,Spring JDBC是Spring框架中用于数据库操作的强大工具,它提供了抽象的JDBC模板、事务管理、数据源配置以及便捷的数据转换功能。通过将Spring JDBC引入项目,可以显著提高代码质量,减少手动处理JDBC的繁琐工作...

    springMVC+springJDBC

    在这个名为 "spring3jdbc" 的项目中,我们可以推测它是一个使用 Spring 3.x 版本的 MVC 结构与 Spring JDBC 集成的示例。Spring 3.x 是 Spring 框架的一个较早版本,尽管如此,它仍然包含了许多现代 Web 开发所需的...

Global site tag (gtag.js) - Google Analytics