`
Acmey
  • 浏览: 53898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring使用JdbcTemplate操作数据库例子

    博客分类:
  • SSH
阅读更多
首先,假设如下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 mvc+jdbctemplate非注解例子

    总的来说,这个"spring mvc+jdbctemplate非注解例子"涵盖了Web开发中的多个核心概念,包括Spring MVC的MVC设计模式、JdbcTemplate对数据库操作的抽象、AOP的切面编程以及连接池的高效资源管理。每个部分都需要对...

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    Spring 学习 JdbcTemplate,模板模式,回调

    JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database Connectivity)的轻量级封装。通过使用JdbcTemplate,开发者可以避免编写大量的样板代码,如打开和关闭连接、处理结果集...

    Spring boot 使用JdbcTemplate访问数据库

    在 Spring Boot 中使用 JdbcTemplate 访问数据库,是一种常见且简便的方式,特别适合那些需要对数据库进行基础操作的应用。 JdbcTemplate 是 Spring Framework 提供的一个模板类,它对 JDBC API 进行了封装,使得...

    Spring JdbcTemplate.batchUpdate 例子

    在Spring框架中,`JdbcTemplate`是用于简化Java数据库连接(JDBC)操作的一个核心组件。这个类提供了很多方法来执行SQL查询、更新语句,包括批处理操作。本篇文章将详细探讨`batchUpdate`方法及其在实际开发中的应用...

    Spring:JdbcTemplate使用指南

    Spring框架中的JdbcTemplate是数据库操作的核心组件之一,它提供了一种简单、安全的方式来执行SQL查询和更新,而无需手动管理数据库连接。本指南将深入探讨JdbcTemplate的用法,帮助开发者更好地理解和应用这个强大...

    struts+spring +jdbctemplate demo

    JdbcTemplate则是Spring框架的一个模块,专门用于简化数据库操作。它提供了一组模板方法,用于执行SQL查询、更新等操作,大大降低了直接使用JDBC时的代码复杂性。通过使用JdbcTemplate,开发者可以避免大量的try-...

    使用Spring JDBCTemplate进行增删改查curd操作

    在Spring框架中,JdbcTemplate是用于简化数据库操作的重要工具,它是Spring JDBC模块的一部分。通过使用JdbcTemplate,开发者可以避免编写大量的重复代码,如手动管理连接、处理结果集等,从而专注于业务逻辑。本文...

    基于spring freemarker jdbctemplate jquery的一个完整的项目例子

    初次学习spring。才看了《spring 3.x》第一章内容,写的一个例子;感觉写得挺经典的。 于是骄傲地分享出来。...jdbctemplate访问数据库;log4j配置文件;json拼凑; jquery技术;分库分表访问的设计;

    spring内置jdbctemplate使用demo

    在数据访问层,Spring 提供了多种方式来操作数据库,其中 `JdbcTemplate` 是一个简单且强大的工具,它封装了 JDBC API,使得数据库操作变得更加简洁和安全。`JdbcTemplate` 减少了手写 SQL 和处理结果集的繁琐工作,...

    Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    在Spring Boot框架中,结合Kotlin编程语言,我们可以利用JdbcTemplate来轻松地连接和操作MySQL数据库。JdbcTemplate是Spring提供的一种简化数据库访问的工具,它提供了模板方法来执行SQL语句,使得数据库操作更加...

    Spring_JdbcTemplate的用法

    Spring的JdbcTemplate是Spring框架中用于简化数据库操作的工具,它是Spring JDBC模块的核心组件,提供了对SQL查询的封装,使得数据库访问更为简单和安全。JdbcTemplate的API设计清晰,主要分为几个部分,其中包括...

    spring mvc注解jdbctemplate

    在Spring MVC框架中,JdbcTemplate是一个非常重要的组件,它提供了对数据库操作的简化API,使得开发者可以更加方便地执行SQL语句,而无需过多关注事务管理、异常处理等底层细节。本文将深入探讨如何在Spring MVC中...

    spring自带的jdbcTemplate查询、插入预编译使用

    在Spring框架中,`jdbcTemplate`是一个非常重要的组件,它为数据库操作提供了便捷且安全的API,降低了SQL注入的风险。本篇文章将详细讲解`jdbcTemplate`的预编译使用,以及如何通过回调方法进行定制化的数据处理。 ...

    JdbcTemplate数据库模板

    总的来说,这个压缩包内容是关于如何使用Spring的JdbcTemplate组件进行数据库操作的一个示例,包括了数据模型、数据库访问对象以及连接管理,提供了完整的数据库操作解决方案。通过学习这个例子,开发者可以更好地...

    JdbcTemplate操作总结

    在Java的Spring框架中,JdbcTemplate是用于简化数据库操作的核心组件。它提供了一种模板方法模式,将SQL语句的执行和结果处理进行了封装,使得数据库访问更加简单、安全。本篇文章将围绕JdbcTemplate的使用进行深入...

    spring连接数据库实例

    总结来说,这个"spring连接数据库实例"主要涵盖了Spring框架中`DataSource`的配置、`JdbcTemplate`的使用以及事务管理的实现。通过这些知识点,我们可以高效地在Spring应用中实现与数据库的交互,提高开发效率。在...

    Spring JdbcTemplate&声明式事务1

    使用JdbcTemplate进行数据库操作非常直观,可以执行SQL查询、更新、插入和删除等操作。以下是一些示例: - 查询数据: ```java List&lt;User&gt; users = jdbcTemplate.query("SELECT * FROM users", new RowMapper() { ...

    spring famework 操作数据库使用jdbc示例代码

    总之,Spring Framework的JDBC模块通过 `JdbcTemplate` 提供了一种方便、安全的方式来处理数据库操作,减少了手动处理JDBC代码的麻烦,提高了开发效率。结合Spring的其他特性,如依赖注入和AOP,可以构建出高度模块...

Global site tag (gtag.js) - Google Analytics