使用Spring的jdbcTemplate进一步简化JDBC操作

先看applicationContext.xml配置文件:

 <?xml version="1.0" encoding="UTF-8"?>

<bean id="springDSN"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName"
        value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
    </property>
    <property name="url"
        value="jdbc:microsoft:sqlserver://localhost:1433;databasename=bbs">
    </property>
    <property name="username" value="sa"></property>
    <property name="password" value="sa"></property>
</bean>

<bean id="jdbcTemplate"
    class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"
    lazy-init="false" autowire="default" dependency-check="default">
    <property name="dataSource">
        <ref bean="springDSN" />
    </property>
</bean>

在看SpringUtil类

  package com.r.dao;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public final class SpringUtil {

private static ApplicationContext  ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

public static Object getBean(String beanName){
     return ctx.getBean(beanName);
}    

}

最后看DAO:

  import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.JdbcTemplate;

import com.r.vo.Book;

public class BookDao {

private JdbcTemplate jdbcT = (JdbcTemplate) SpringUtil
        .getBean("jdbcTemplate");

public List findALL() {
    String sql = "select * from BookInfo";
    return jdbcT.queryForList(sql);        
}

public List<Book> findALLBooks() {
    List<Book> books = new ArrayList<Book>();;
    String sql = "select * from BookInfo";
    List list = jdbcT.queryForList(sql); 
    Iterator iterator = list.iterator();
    Book book = null;
    while (iterator.hasNext()) {
        Map map4book = (Map) iterator.next();
        book = new Book();
        book.setBid((Integer) map4book.get("bid"));
        book.setBookName((String)map4book.get("bookName"));
        book.setBookType((String)map4book.get("bookType"));        
        book.setBookPic(((BigDecimal)map4book.get("bookPic")).doubleValue() );            
        book.setCount((Integer) map4book.get("count"));
        books.add(book);
    }
    return books;
}    
public int delete(int bid){
    String sql = "delete from BookInfo where bid =?";
    return jdbcT.update(sql, new Object[]{bid});
}     
public static void main(String[] args) {        
    List<Book> books = new BookDao().findALLBooks();;
    for(Book book:books){
        System.out.println(book.getBid()+","+book.getBookName()+","+book.getBookType());
    }
}

}

细心你,会发现JdbcTemplate的实例中有一系列的方法如:queryForXXX,update,delete大大简化了JDBC操作。
当然,还可以再进一步的优化一下,就是通过依赖注入,直接把jdbcTemplate注入到dao类的jdbcT字段。
先看新的applicationContext.xml配置文件:

<?
xml version="1.0" encoding="UTF-8"
?>


<
beans 
xmlns
="http://www.springframework.org/schema/beans"

xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
<
bean 
id
="springDSN"

    class
="org.springframework.jdbc.datasource.DriverManagerDataSource"
>

    
<
property 
name
="driverClassName"

        value
="com.microsoft.jdbc.sqlserver.SQLServerDriver"
>

    
</
property
>

    
<
property 
name
="url"

        value
="jdbc:microsoft:sqlserver://localhost:1433;databasename=bbs"
>

    
</
property
>

    
<
property 
name
="username"
  value
="sa"
></
property
>

    
<
property 
name
="password"
  value
="sa"
></
property
>


</
bean
>



<
bean 
id
="jdbcTemplate"

    class
="org.springframework.jdbc.core.JdbcTemplate"
  abstract
="false"

    lazy-init
="false"
  autowire
="default"
  dependency-check
="default"
>

    
<
property 
name
="dataSource"
>

        
<
ref 
bean
="springDSN"
  
/>

    
</
property
>

    
</
bean
>


    
<
bean 
id
="bookDao"
  class
="com.yy.struts.dao.BookDao"
>

       
<
property 
name
="jdbcT"
>

          
<
ref 
bean
="jdbcTemplate"
  
/>

       
</
property
>

    
</
bean
>


</
beans
>

那么新的DAO类:


import
  java.math.BigDecimal;

import
  java.util.ArrayList;

import
  java.util.Iterator;

import
  java.util.List;

import
  java.util.Map;


import
  org.springframework.jdbc.core.JdbcTemplate;


import
  com.r.vo.Book;


public
  
class
  BookDao {

    
private
  JdbcTemplate jdbcT;

    
public
  List findALL() {
        String sql 
=
  
"
select * from BookInfo
"
;
        
return
  jdbcT.queryForList(sql);        
    }

    
public
  List
<
Book
>
  findALLBooks() {
        List
<
Book
>
  books 
=
  
new
  ArrayList
<
Book
>
();;
        String sql 
=
  
"
select * from BookInfo
"
;
        List list 
=
  jdbcT.queryForList(sql); 
        Iterator iterator 
=
  list.iterator();
        Book book 
=
  
null
;
        
while
  (iterator.hasNext()) {
            Map map4book 
=
  (Map) iterator.next();
            book 
=
  
new
  Book();
            book.setBid((Integer) map4book.get(
"
bid
"
));
            book.setBookName((String)map4book.get(
"
bookName
"
));
            book.setBookType((String)map4book.get(
"
bookType
"
));        
            book.setBookPic(((BigDecimal)map4book.get(
"
bookPic
"
)).doubleValue() );            
            book.setCount((Integer) map4book.get(
"
count
"
));
            books.add(book);
        }
        
return
  books;
    }    
    
public
  
int
  delete(
int
  bid){
        String sql 
=
  
"
delete from BookInfo where bid =?
"
;
        
return
  jdbcT.update(sql, 
new
  Object[]{bid});
    }     
    
public
  
static
  
void
  main(String[] args) {        
        List
<
Book
>
  books 
=
  
new
  BookDao().findALLBooks();;
        
for
(Book book:books){
            System.out.println(book.getBid()
+
"
,
"
+
book.getBookName()
+
"
,
"
+
book.getBookType());
        }
    }
}

通过依赖注入,对象之间的关系由SPRING来维护,这样能降低类与类的耦合度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日霄科技

感谢各位大佬,您鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值