最代码官方的gravatar头像
最代码官方 2014-03-06 14:03:29

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

前言:

本文指在介绍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框架搭建及其增删改查使用指南

 


打赏

文件名:zuidaima_admin.rar,文件大小:4.117K 下载
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友