Spring JdbcTemplate框架搭建及其增删改查使用指南

来源:互联网 发布:网络创业失败案例 编辑:程序博客网 时间:2024/05/31 19:00

原文:Spring JdbcTemplate框架搭建及其增删改查使用指南

源代码下载地址:http://www.zuidaima.com/share/1724429678644224.htm

前言:

本文指在介绍Spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基本概念。目标是使读者能够对JdbcTemplate快速地掌握和使用。

准备:

1. Spring的基本概念

       Spring框架核心的思想就是建立一个Java对象的大工厂,用户只要给工厂一个指令,工厂就能将用户需要的对象根据配置文件组装好返还给用户。用户需要做的许多工作则可以写成简单的配置文件。

2. 丑陋的JDBC代码

Connection con = null;PreparedStatement pStmt = null;ResultSet rs = null;try {     con = ods.getConnection();     String sql = "select * from admin";     pStmt = con.prepareStatement(sql);     rs = pStmt.executeQuery();     while (rs.next()) {     }} catch (Exception ex) {     try {          con.rollback();     } catch (SQLException sqlex) {          sqlex.printStackTrace(System.out);     }     ex.printStackTrace();} finally {     try {          rs.close();          pStmt.close();          con.close();     } catch (Exception e) {          e.printStackTrace();     }}

 

以上是常见的JDBC代码,简单的select语句也需要冗长的出错处理,并且每个函数都不断地重复同样的代码。

 

3. JdbcTemplate的作用

       JdbcTemplate正是为了减少上述繁琐的代码而设计出来的。它是对JDBC的一种封装,抽象我们常用的一些方法。Simple and Stupid就是它的目标。下面是完成了刚才JDBC代码同样功能的JdbcTemplate的代码:

String sql = "select * from admin";jdbcTemplate.query(sql,new RowCallbackHandler() {         public void processRow(ResultSet rs) throws SQLException {                  }            } );

 

 

环境搭建:

1. 数据库的配置

      本文使用Mysql数据库,新建表admin:

CREATE TABLE `admin` (  `ID` bigint(20) unsigned NOT NULL auto_increment,  `NAME` varchar(100) NOT NULL,  `PASSWORD` varchar(200) NOT NULL,  PRIMARY KEY  (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

  2. Spring配置

       JdbcTemplate的使用需要有DataSource的支持,所以在配置文件中,我们首先要配置一个OracleDataSource,然后在将这个DataSource配置到JdbcTemplate里。接着将JdbcTemplate配置进DAO层,最后将DAO配置进Model层。简要的关系如下:

Spring JdbcTemplate框架搭建及其增删改查使用指南

 

 

<?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.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/zuidaima_admin?useUnicode=true&amp;characterEncoding=utf-8" /><property name="username" value="root" /><property name="password" value="111111" /></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"><ref bean="dataSource" /></property></bean><bean id="userDao" class="com.zuidaima.dao.impl.UserDaoImpl"><property name="jdbcTemplate"><ref bean="jdbcTemplate" /></property></bean><bean id="user" class="com.zuidaima.model.User"><property name="dao"><ref bean="userDao" /></property></bean></beans>

 

 

3. 项目截图:

      Spring JdbcTemplate框架搭建及其增删改查使用指南

 

使用方法:

1.查找

多行查询:

class UserRowMapper implements RowMapper {        public Object mapRow(ResultSet rs,int index) throws SQLException        {            User u = new User();            u.setId(rs.getString("ID"));            u.setName(rs.getString("Name"));            u.setPassword(rs.getString("Password"));            return u;        }    }public List select(String where)    {        List list;              String sql = "select * from admin "+where;              list = jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));        return list;    }

 

 

List最终返回的是满足条件的User队列。

 

单行查询:

public User selectById(String id){    String sql = "select * from admin where id=?";    final User u = new User();    final Object[] params = new Object[] {id};    jdbcTemplate.query(sql, params, new RowCallbackHandler(){                        public void processRow(ResultSet rs) throws SQLException {                                 u.setId(rs.getString("ID"));                                 u.setName(rs.getString("NAME"));                                 u.setPassword(rs.getString("PASSWORD"));                        }                        });            return u;}

 

 

2.      插入

public void insert(User u){     String sql = "insert into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)";     Object[] params = new Object[] {                                                u.getName(),                                                u.getPassword() };     jdbcTemplate.update(sql,params);}

 

admin_id_seq.nextval为Oracle设置好的序列,问号“?”被params里的数据依次替代,最终执行sql。

 

3.       修改

非常简单:

public void update(String how){        jdbcTemplate.update(how);    }

 

 

运行截图

Spring JdbcTemplate框架搭建及其增删改查使用指南

数据库截图

Spring JdbcTemplate框架搭建及其增删改查使用指南


0 0
原创粉丝点击