您的位置:首页 > 编程语言 > Java开发

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

2013-01-21 14:10 531 查看
先看applicationContext.xml配置文件:
Code
<?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>
</beans>
在看SpringUtil类 
Code
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:
Code
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());

        }

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbcTemple spring struts2