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>
</beans>

SpringUtil类:

package com.r.dao;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public final class SpringUtil {//读取applicationContext.xml配置文件private static ApplicationContext  ctx = new ClassPathXmlApplicationContext("applicationContext.xml");public static Object getBean(String beanName){return ctx.getBean(beanName);}
}

BookDao.java

package com.hollycrm.hollyuniproxy.opration.svcmonitor.mvc;import java.awt.print.Book;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;import com.hollycrm.hollybeacon.basic.util.SpringUtil;
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;@Controller
public class Test {private static final Log logger = LogFactory.getLog(Test.class);private JdbcTemplate jdbcTemplate = (JdbcTemplate) SpringUtil.getBean("jdbcTemplate");public List findAll(){String sql = "select * from BookInfo ";return jdbcTemplate.queryForList(sql);}public List<Book> findBookByName(String bookName){List bookList = new ArrayList();//存放要返回的book集合String sql = "select * from BookInfo where bookName = ? ";List params = new ArrayList<>();params.add(bookName);//sql语句参数List list = jdbcTemplate.queryForList(sql, params.toArray());Iterator iterator = list.iterator();Book book = null;//遍历查回的book集合for (iterator.hasNext()) {Map map4book = (Map)iterator.next();book = null;book.setBid((Integer)map4book.get("bid"));book.setBookName(bookName);book.setBookType((Integer)map4book.get("bookType"));book.setBookAuthor((Integer)map4book.get("bookAuthor"));book.setBookCount((Integer)map4book.get("bookCount"));bookList.add(book);}return bookList;}public int delete(String bid){String sql = "delete * from BookInfo where bid = ? ";return jdbcTemplate.update(sql, new Object[]{bid});}public static void main(String[] args) {        List<Book> books = BookDao().findBookbyName(String bookName);for(Book book:books){System.out.println(book.getBid()+","+book.getBookName()+","+book.getBookType());}}}

JdbcTemplate的实例中有一系列的方法如:queryForXXX,update,delete大大简化了JDBC操作。

—————————————————————————--

可以进一步的优化一下,就是通过依赖注入,直接把jdbcTemplate注入到dao类的jdbcTemplate字段。

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>

BookDao.java

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来维护,这样可以减少类与类之间的耦合度。

——————————————————————————

当然,还可以再进一步的优化一下,就是通过自动注入,直接把jdbcTemplate自动注入到dao类的jdbcTemplate字段。

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"><!--跟依赖注入相比只多加了这一句--><context:component-scan base-package="********.BookDao" /><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>

BookDao.java

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 {@Autowiredprotected JdbcTemplate 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());}}
}

【Spring学习】使用Spring的jdbcTemplate简化JDBC操作相关推荐

  1. Spring学习笔记--spring+mybatis集成

    前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...

  2. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  3. 【Spring学习】Spring简介

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 一.Spri ...

  4. 【Spring学习】spring开发包介绍

    spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mo ...

  5. 【Spring学习】Spring自定义标签详细步骤

    目录标题 前言 一.自定义标签步骤 1.定义属性POJO 2.定义XSD文件描述组件内容 3.定义标签解析器 4.注册标签解析器 5.定义spring.handlers和spring.schemas文 ...

  6. Spring学习笔记:尝试Lombok简化实体类代码

    文章目录 一.Lombok概述 二.安装Lombok插件 三.Lombok注解 (一)@Data (二)@Getter/@Setter (三)@NonNull (四)@Cleanup (五)@Equa ...

  7. 【Spring学习】Spring JdbcTemplate之五类方法总结

    最近写了几个同步数据的统计任务,使用到了JDBCTemplate的批处理,顺手将JDBCTemplate的用法大概总结了一下. JDBCTemplate主要提供了五类方法: execute()方法:可 ...

  8. 【Spring学习】Spring的AOP模块应用详解

    面向切面编程(AOP)的思想就是在执行某些代码前执行另外的代码,使程序更灵活.扩展性更好,可以随便地添加删除某些功能. javaweb机制中的filter就是面向切面编程的例子.Tomcat会在程序运 ...

  9. Spring学习总结——Spring实现AOP的多种方式

    目录 一.基于XML配置的Spring AOP 二.使用注解配置AOP 三.AspectJ切点函数 四.AspectJ通知注解 五.零配置实现Spring IoC与AOP 六.示例下载 AOP(Asp ...

最新文章

  1. python3 打印对象的全部属性
  2. 网络爬虫初步:从访问网页到数据解析
  3. c#往结构体里面读数据_结构体内存对齐,这回给你彻底搞会!
  4. mysql错误号码1040_Mysql ERROR 1040 (00000): Too many connections
  5. 利用GBDT模型构造新特征具体方法
  6. No JVM could be found on your system解决方法
  7. vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...
  8. C++ 虚函数和虚继承解析
  9. 源代码 oa办公系统jsp_【程序源代码】经典的办公系统开发框架
  10. [Android] 开发一款软件我学到了些什么?
  11. 软件测试自我评价范文,软件测试工程师100字自我评价范文
  12. 动态规划:完全背包问题
  13. yapi在centos下的部署安装 后台启动(亲自动手实践)
  14. python时间函数纳秒_python – 获取纳秒级精度的文件修改时间
  15. mysql increment_mysql中auto_increment用法详解
  16. 洛谷——P1296 奶牛的耳语(java实现)
  17. python_获取两个数,打印中间值
  18. 云场景实践研究第59期:饿了么
  19. php 金额转大写,php 人民币金额转大写程序
  20. 【PTA-训练day14】L2-026 小字辈 + L1-054 福到了

热门文章

  1. linuxHacks中记载的一些小技巧
  2. Linux 相关发音
  3. 看下你是否都做了吗?系统140种实用设置2
  4. C/C++头文件大全
  5. 爱因斯坦《我的世界观》
  6. 基础数据类型操作(一)——整型、字符串
  7. QlikSense移动端使用攻略
  8. 获取图片中感兴趣区域的信息(Matlab实现)
  9. 转jmeter --JDBC请求
  10. IOS开发中常量的处理