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. Java中的字符串

    Java语言中,把字符串作为对象来处理,类String就可以用来表示字符串(类名首字母都是大写的). 1.字符串常量 字符串常量是用双引号括住的一串字符. 例如:"Hello World&q ...

  2. SpringMvc面试题

    f-sm-1. 讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差 ...

  3. C程序范例(1)——学生管理系统”数组“实现

    1.在写程序之前,我想告诉大家,这个程序初学者很可能可能看不懂,但是这很正常,因为这是我在学习完C语言之后写的.所以大家好好学习吧! 由于这是在我大一刚学到数组时编写的程序,有许多冗余的部分,但当时做 ...

  4. 学习笔记:Asp.Net MVC更新部分页面

    Asp.Net MVC 更新部分页面 设想我们有一篇文章下面的提交评论时如何只刷新评论内容部分, 方法一,利用ajax通过js代码实现. 方法二,利用Ajax.BeginForm()+部分视图实现. ...

  5. jquery叠加页片自动切换特效

    查看效果:http://keleyi.com/keleyi/phtml/jqtexiao/34.htm 下面是HTML代码: <!DOCTYPE html> <html xmlns= ...

  6. JS+HTML5的Canvas画图模拟太阳系运转

    查看效果:http://hovertree.com/texiao/html5/9.htm 地球自传 http://hovertree.com/texiao/html5/8.htm 代码如下: < ...

  7. 安装InfoPath 2013后 SharePoint 2010 出现 “找不到 Microsoft.Office.InfoPath, Version=14.0.0....” 的错误的解决方案

    1. 症状 您的SharePoint 2010的服务器是不是最近一直出现这个错误呢? Could not load file or assembly 'Microsoft.Office.InfoPat ...

  8. Java Web解决解析乱码和响应乱码

    package cn.edu.aynu.rjxy.servlet; import java.io.IOException; import java.io.PrintWriter; import jav ...

  9. ios 性能优化策略

    1.尽量不用动态高度 2.如果是动态高度的话,提前计算好即将展示的高度并使用 一定规则跟对应的对象进行绑定缓存起来以便下一次使用 3.不要在layoutSubViews 方法中对UI elements ...

  10. 移动端App广告常见的10种形式

    什么是App广告?   App广告,或称In-App广告,是指智能手机和平板电脑这类移动设备中第三方应用程序内置广告,属于移动广告的子类别. App广告兴起得益于其载体—App的风行.平板电脑和大屏触 ...