最代码官方的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 下载
最代码最近下载分享源代码列表最近下载
秦sir3067683450  LV10 2021年4月7日
pt11100  LV9 2020年7月17日
cpk159  LV8 2020年3月21日
ftc1314  LV12 2019年9月25日
homeshow  LV18 2019年9月11日
13734993  LV7 2019年8月8日
1jj15j  LV6 2019年8月2日
小资李  LV13 2019年7月20日
zhanghm  LV10 2018年12月26日
yuzikong001  LV7 2018年12月25日
最代码最近浏览分享源代码列表最近浏览
ma406805131  LV19 2024年6月28日
你爹正在加载中  LV4 2023年7月28日
小陈666666  LV2 2023年6月19日
遗留问题  LV2 2023年6月9日
你是太阳  LV3 2023年5月16日
wanglinddad  LV55 2023年4月8日
guviva  LV6 2023年3月21日
不知道取什么名字12  LV1 2022年12月12日
15342201772  LV9 2022年12月4日
chenzhen23  LV7 2022年4月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友