Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 758|回复: 0

[默认分类] 使用Spring的jdbcTemplate进一步简化JDBC操作

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-13 13:58:20 | 显示全部楼层 |阅读模式
    先看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());
            }
        }
    }


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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-19 14:18 , Processed in 0.362558 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表