1:为什么要使用jdbcTemplate?

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

步骤一:创建实体类

package beans;

public class Book {
@Override
public String toString() {
return "Book [bid=" + bookid + ", bname=" + bname + ", bprice=" + bprice
+ "]";
}
private int bookid;
private String bname;
private int bprice;
public int getBid() {
return bookid;
}
public String getBname() {
return bname;
}
public int getBprice() {
return bprice;
}
public void setBid(int bid) {
this.bookid = bid;
}
public void setBname(String bname) {
this.bname = bname;
}
public void setBprice(int bprice) {
this.bprice = bprice;
} }

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

package dao;

import java.util.List;

import beans.Book;

public interface IBook {
public int addbook(Book book);
public List<Book> getall();
}
package dao.impl; import java.util.List;
import java.util.Map; import org.springframework.jdbc.core.support.JdbcDaoSupport; import util.MyRowMapped;
import beans.Book;
import dao.IBook; public class IBookimpl extends JdbcDaoSupport implements IBook { @Override
public int addbook(Book book) {
String sql="insert into book(bid,bname,bprice) values(?,?,?)";
int update = this.getJdbcTemplate().update(sql,book.getBid(),book.getBname(),book.getBprice());
return update;
} @Override
public List<Book> getall() {
String sql="select * from book";
List<Book> query = this.getJdbcTemplate().query(sql,new MyRowMapped());
return query;
} }

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

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

package util;

import java.sql.ResultSet;
import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import beans.Book; public class MyRowMapped implements RowMapper<Book>{ //rs:單條記錄
@Override
public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
Book book=new Book();
book.setBid(rs.getInt("bid"));
book.setBname(rs.getString("bname"));
book.setBprice(rs.getInt("bprice"));
return book;
}
}

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

步骤三:数据源的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
<bean id="bookDao" class="dao.impl.IBookimpl">
<property name="dataSource" ref="DataSource"></property>
</bean>
<bean id="serviceDao" class="service.impl.IBookServiceimpl">
<property name="dao" ref="bookDao"></property>
</bean>
<!-- 配置數據源 -->
<!-- 1.spring內置 -->
<!-- <bean id="DataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="Y2162"></property>
<property name="password" value="1"></property>
</bean> -->
<!-- dbcp方式配置 需要导入dbcp的包和pool的包 -->
<!-- <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="Y2162"></property>
<property name="password" value="1"></property>
</bean> -->
<!-- c3p0方式配置 需要导入c3p0的包 -->
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
</bean>
<!-- 註冊jdbc屬性 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean> <context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 註冊jdbctemplate -->
<bean id="myTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="DataSource"></property>
</bean>
</beans>

步骤四:测试类代码

package test;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import service.IBookService;
import beans.Book; public class MyTest {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
/*IBookService bean = (IBookService)ctx.getBean("serviceDao");
Book book=new Book();
book.setBid(3);
book.setBname("深入spring");
book.setBprice(100);
System.out.println(bean.addbook(book));*/
IBookService bean = (IBookService)ctx.getBean("serviceDao");
List<Book> getall = bean.getall();
for (Book book : getall) {
System.out.println(book);
}
}
}

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. 成 功 的 背 后 !( 致给所有IT人员)

    转载了这篇文章,希望能对自己和看到这篇博客的人有所激励. 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人. ------------------- ...

  2. Lind.DDD.Caching分布式数据集缓存介绍

    回到目录 戏说当年 大叔原创的分布式数据集缓存在之前的企业级框架里介绍过,大家可以关注<我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器>,而今天主要对Lind.DDD.Cachin ...

  3. java web学习总结(十七) -------------------过滤器

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  4. CSS制作凹环特效

    就是在地面上打凿出凹的圆环效果,利用linear-gradient线性渐变增强内环质感,再用伪类after元素设置中心圆凸块的位置以及大小与跟内环之间的阴影度,然后设置内环的颜色就行了:第四个环上面的 ...

  5. 偷偷发请求的ajax

    概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

  6. sass初级语法

    github地址:https://github.com/lily1010/sass/tree/master/course01 用到的sass语法是: sass --watch test.scss:te ...

  7. js的url解析函数封装

    在实际开发中,有些通过get方式与后台交换数据的时候,需要用到的数据在url中,因此就需要我们来获取到url中有用的信息,下面封装的函数已经可以将url解析的很彻底了,可以拿来直接用的: functi ...

  8. 学习笔记 ACCESS 延迟注入

    通过执行很多命令延长执行时间判断返回是否有SQL注入. 例如: login.asp?id and (SELECT count(*) FROM MSysAccessObjects AS T1, MSys ...

  9. SJGestureUnlock快速集成手势解锁

    前言:如果页面显示不完整或图片看不了还请移步:简书 SJGestureUnlock.h 常用自定义属性 @interface SJGestureUnlock : UIView @property (n ...

  10. iOS多线程实现2-NSThread

    NSThread是轻量级的多线程开发,OC语言编写,更加面向对象,使用起来也并不复杂,但是使用NSThread需要自己管理线程生命周期.在iOS开发中很少使用它来创建一个线程,但是经常使用它做一些延时 ...