jdbcTemplate之jdbc模板技术
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模板技术的更多相关文章
- Spring框架的JDBC模板技术和事物
Spring框架的JDBC模板技术 技术分析之Spring框架的JDBC模板技术概述 1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 ...
- Spring框架的JDBC模板技术概述
1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2. 提供了JDBC模板,Spring框架提供的 * JdbcTemplate类 3. Spring框架可以整 ...
- Spring 框架的JDBC模板技术
1. 概述 Spring 框架提供了很多持久层的模板类来简化编程; Spring 框架提供的JDBC模板类: JdbcTemplate 类; Spring 框架提供的整合 Hibernate 框架的模 ...
- JdbcTemplate:Jdbc模板和数据库元数据
通过 Jdbc .C3P0 .Druid 的使用我们会发现即使我们做了工具的封装,但重复性的代码依旧很多.我们可以通过 JdbcTemplate 即 Jdbc 模板来使我们的代码更加简洁,逻辑更加清晰 ...
- day39-Spring 16-Spring的JDBC模板:设置参数到属性文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入beans的头 --> <beans ...
- day39-Spring 15-Spring的JDBC模板:C3P0连接池配置
<!-- 配置C3P0连接池 --> <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPo ...
- day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...
- day39-Spring 13-Spring的JDBC模板:默认连接池的配置
Spring内置的连接池DriverManagerDataSource的源码. /* * Copyright 2002-2008 the original author or authors. * * ...
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- function的name属性
name属性是函数的一个非标准的属性. 通过这个属性,我们可以访问给定函数的名字.属性name的值永远等于跟在function关键字后的标识符. eg: function jenny(arg1,a ...
- PHP的变量和常量
- [转载]T-SQL(MSSQL)语句查询执行顺序
注意:笔者经过实验和查阅资料,已在原作基础上做了部分更改.更改不代表原作观点,查看原作请点击下方链接. 原文出处: 作者:张龙豪 链接:http://www.cnblogs.com/knowledge ...
- JavaScript的几种Math函数,random(),ceil(),round(),floor()
1.Math.random():返回 0 ~ 1 之间的随机数.2.Math.ceil():返回值:返回大于或等于x,并且与之最接近的整数(如果x是正数,则把小数"入":如果x是负 ...
- ABAP使用OLE2对象创建EXCEL文件
厌倦了总是下载一模一样的EXCEL文档?没有颜色,边框,有效性验证.... 让我们看看怎样用OLE2对象来创造可爱的EXCEL工作表吧!(效果如下) 首先你需要知道微软EXCEL中的不同部分的名称,每 ...
- 一个有趣的CM
系统 : Windows xp 程序 : Crackme#3 - Self Destructed 程序下载地址 :http://pan.baidu.com/s/1kVxwlaZ 要求 : 注册机编写 ...
- Activity详解二 activity数据传递
首先看效果图: 1.Bundle类的作用 Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值.相对于Map,它提供了各种常用类型的putXxx()/getXxx()方 ...
- iOS MJRefresh设置MJRefreshStateNoMoreData状态图片
MJRefresh地址 // 代码地址: https://github.com/CoderMJLee/MJRefresh// 代码地址: http://code4app.com/ios/%E5%B ...
- 了解HTML 元素分类
HTML中包含大量的标签, 这些标签在我们使用中发现会有小小的差别, 有的标签用了之后不会有太大的布局变化, 只是语义化, 而有的标签却会重起一行, 相当于自己回车了一次, 这就是不同标签元素的分类不 ...
- Android 监听ScrollView的滑动
我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 protected void onScrollChanged ...