最代码广告位
最代码官方的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下载
最代码最近下载分享源代码列表最近下载
cpk159 LV83月21日
月亮月亮
ftc1314 LV122019年9月25日
月亮月亮月亮
homeshow LV182019年9月11日
太阳星星星星
13734993 LV72019年8月8日
月亮星星星星星星
1jj15j LV52019年8月2日
月亮星星
小资李 LV122019年7月20日
月亮月亮月亮
zhanghm LV102018年12月26日
月亮月亮星星星星
yuzikong001 LV72018年12月25日
月亮星星星星星星
三几个 LV102018年8月14日
月亮月亮星星星星
zjjhzjb LV122017年12月12日
月亮月亮月亮
最代码最近浏览分享源代码列表最近浏览
zhouzh LV83月31日
月亮月亮
bjgaocl LV133月21日
月亮月亮月亮星星
暂无贡献等级
已断痕 LV22月15日
星星星星
cpk159 LV81月14日
月亮月亮
aixuexideliudada LV12019年12月31日
星星
ycg1988 LV22019年12月27日
星星星星
mxdlyd LV62019年12月20日
月亮星星星星
ziwng5211314 LV72019年12月10日
月亮星星星星星星
123hdhdhd LV102019年11月27日
月亮月亮星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友