1:为什么要使用jdbcTemplate?

在实际开发中使用jdbc技术太过复杂,为了减少代码冗余,操作简单

步骤一:创建实体类

  1. package beans;
  2.  
  3. public class Book {
  4. @Override
  5. public String toString() {
  6. return "Book [bid=" + bookid + ", bname=" + bname + ", bprice=" + bprice
  7. + "]";
  8. }
  9. private int bookid;
  10. private String bname;
  11. private int bprice;
  12. public int getBid() {
  13. return bookid;
  14. }
  15. public String getBname() {
  16. return bname;
  17. }
  18. public int getBprice() {
  19. return bprice;
  20. }
  21. public void setBid(int bid) {
  22. this.bookid = bid;
  23. }
  24. public void setBname(String bname) {
  25. this.bname = bname;
  26. }
  27. public void setBprice(int bprice) {
  28. this.bprice = bprice;
  29. }
  30.  
  31. }

步骤二:创建接口以及实现类

  1. package dao;
  2.  
  3. import java.util.List;
  4.  
  5. import beans.Book;
  6.  
  7. public interface IBook {
  8. public int addbook(Book book);
  9. public List<Book> getall();
  10. }
  11. package dao.impl;
  12.  
  13. import java.util.List;
  14. import java.util.Map;
  15.  
  16. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  17.  
  18. import util.MyRowMapped;
  19. import beans.Book;
  20. import dao.IBook;
  21.  
  22. public class IBookimpl extends JdbcDaoSupport implements IBook {
  23.  
  24. @Override
  25. public int addbook(Book book) {
  26. String sql="insert into book(bid,bname,bprice) values(?,?,?)";
  27. int update = this.getJdbcTemplate().update(sql,book.getBid(),book.getBname(),book.getBprice());
  28. return update;
  29. }
  30.  
  31. @Override
  32. public List<Book> getall() {
  33. String sql="select * from book";
  34. List<Book> query = this.getJdbcTemplate().query(sql,new MyRowMapped());
  35. return query;
  36. }
  37.  
  38. }

*如果要使用查询功能,需要调用jdbcTemplate的query方法,query方法的重载方法需要RowMapped类型的参数,不过RowMapped是接口类型。

所以要自己手动创建一个RowMapped接口的实现类。并重写其方法~!

  1. package util;
  2.  
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5.  
  6. import org.springframework.jdbc.core.RowMapper;
  7.  
  8. import beans.Book;
  9.  
  10. public class MyRowMapped implements RowMapper<Book>{
  11.  
  12. //rs:單條記錄
  13. @Override
  14. public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
  15. Book book=new Book();
  16. book.setBid(rs.getInt("bid"));
  17. book.setBname(rs.getString("bname"));
  18. book.setBprice(rs.getInt("bprice"));
  19. return book;
  20. }
  21. }

这里的resultSet对象代表单条记录,rowNum代表第几行的数据。所以不需要使用while循环来迭代。

步骤三:数据源的配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  10. ">
  11. <bean id="bookDao" class="dao.impl.IBookimpl">
  12. <property name="dataSource" ref="DataSource"></property>
  13. </bean>
  14. <bean id="serviceDao" class="service.impl.IBookServiceimpl">
  15. <property name="dao" ref="bookDao"></property>
  16. </bean>
  17. <!-- 配置數據源 -->
  18. <!-- 1.spring內置 -->
  19. <!-- <bean id="DataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  20. <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
  21. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
  22. <property name="username" value="Y2162"></property>
  23. <property name="password" value="1"></property>
  24. </bean> -->
  25. <!-- dbcp方式配置 需要导入dbcp的包和pool的包 -->
  26. <!-- <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource">
  27. <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
  28. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
  29. <property name="username" value="Y2162"></property>
  30. <property name="password" value="1"></property>
  31. </bean> -->
  32. <!-- c3p0方式配置 需要导入c3p0的包 -->
  33. <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  34. <property name="driverClass" value="${driverClass}"></property>
  35. <property name="jdbcUrl" value="${jdbcUrl}"></property>
  36. <property name="user" value="${user}"></property>
  37. <property name="password" value="${password}"></property>
  38. </bean>
  39. <!-- 註冊jdbc屬性 -->
  40. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  41. <property name="location" value="classpath:jdbc.properties"></property>
  42. </bean>
  43.  
  44. <context:property-placeholder location="classpath:jdbc.properties"/>
  45. <!-- 註冊jdbctemplate -->
  46. <bean id="myTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  47. <property name="dataSource" ref="DataSource"></property>
  48. </bean>
  49. </beans>

步骤四:测试类代码

  1. package test;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7.  
  8. import service.IBookService;
  9. import beans.Book;
  10.  
  11. public class MyTest {
  12. public static void main(String[] args) {
  13. ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
  14. /*IBookService bean = (IBookService)ctx.getBean("serviceDao");
  15. Book book=new Book();
  16. book.setBid(3);
  17. book.setBname("深入spring");
  18. book.setBprice(100);
  19. System.out.println(bean.addbook(book));*/
  20. IBookService bean = (IBookService)ctx.getBean("serviceDao");
  21. List<Book> getall = bean.getall();
  22. for (Book book : getall) {
  23. System.out.println(book);
  24. }
  25. }
  26. }

jdbcTemplate之jdbc模板技术的更多相关文章

  1. Spring框架的JDBC模板技术和事物

    Spring框架的JDBC模板技术         技术分析之Spring框架的JDBC模板技术概述  1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单     ...

  2. Spring框架的JDBC模板技术概述

    1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2. 提供了JDBC模板,Spring框架提供的 * JdbcTemplate类 3. Spring框架可以整 ...

  3. Spring 框架的JDBC模板技术

    1. 概述 Spring 框架提供了很多持久层的模板类来简化编程; Spring 框架提供的JDBC模板类: JdbcTemplate 类; Spring 框架提供的整合 Hibernate 框架的模 ...

  4. JdbcTemplate:Jdbc模板和数据库元数据

    通过 Jdbc .C3P0 .Druid 的使用我们会发现即使我们做了工具的封装,但重复性的代码依旧很多.我们可以通过 JdbcTemplate 即 Jdbc 模板来使我们的代码更加简洁,逻辑更加清晰 ...

  5. day39-Spring 16-Spring的JDBC模板:设置参数到属性文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 引入beans的头 --> <beans ...

  6. day39-Spring 15-Spring的JDBC模板:C3P0连接池配置

    <!-- 配置C3P0连接池 --> <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPo ...

  7. day39-Spring 14-Spring的JDBC模板:DBCP连接池配置

    一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...

  8. day39-Spring 13-Spring的JDBC模板:默认连接池的配置

    Spring内置的连接池DriverManagerDataSource的源码. /* * Copyright 2002-2008 the original author or authors. * * ...

  9. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. Java基本概念(1)什么是Java

    什么是Java Java是一种开发语言(核心特点:跨平台,面向对象,名称由来看这里:J2EE里面的2是什么意思),对于开发者来讲,Java基本等于Jdk. Jdk的版本介绍看这里:Java都有那些版本 ...

  2. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

  3. BaseAdapter的抽取

    为了更方便高效的使用BaseAdapter,特意抽取了一下,下面是简单的结构图: 需要4个类: [MyBaseAdapter3]: public abstract class MyBaseAdapte ...

  4. 【系统架构】IT职业技能图谱(点开大图查看)

    本文地址 1 程序开发语言综述 2 iOS开发工程师必备技能 3 运维工程师必备技能 4 前端工程师必备技能 5 大数据工程师必备技能 6 云计算工程师必备技能 7 安全工程师必备技能 8 移动无线测 ...

  5. ABP 初探 之基于EasyUI的CURD

    结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最 ...

  6. 解决eclipse配置Tomcat时找不到server选项(Mac通用)

    集成Eclipse和Tomcat时找不到server选项: 按照网上的步骤如下: 在Eclipse中,窗口(window)——首选项(preferences)——服务器(Server)——运行时环境( ...

  7. Javascript中prototype属性详解

    在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...

  8. dojo.require()的相关理解

    Dojo 提供了一个非常强大的javascript控件库. 在使用dojo之前,用户基本上不需要具备任何基础知识. 你可以用script远程链接到dojo(dojo.js), 也可以把dojo.js下 ...

  9. 谷歌电子市场1--BaseFragment

    1.BaseFragment 共性 加载中加载失败数据为空加载成功 2.loadData调用 3.网络封装 请求网络获取数据缓存机制(写缓存和读缓存)解析数据请求网络前,先判断是否有缓存, 有的话就加 ...

  10. 全局响应MotionEvent

    遇到这样一个需求:应用无论处于哪个view controller,摇动手机,都能够出发某一方法. 能够想到的思路就是用苹果封装好的“MotionEvent”,但是如果简单的把一下代码加到某一view ...