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 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- ExpandableListView实现展开更多和收起更多
[需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...
- CSS3过渡详解-遁地龙卷风
第二版 0.环境准备 (1)过渡需要浏览器的支持,使用这些属性要加上浏览器厂商的前缀,我用的chrome49已经不需要前缀了, -o- Opera -webkit- Safari.Chrome -mo ...
- 函数模块:CTVB_COMPARE_TABLES--两个表中删除/变更/粘贴分解
这个函数模块比较两个内表,将被删除.增加和修改的内表行分别分组输出. 输入参数:TABLE_OLD:旧表TABLE_NEW:新表KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Unicod ...
- Menu创建菜单
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是O ...
- 【代码笔记】iOS-可以向左(右)滑动
一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...
- iOS面试题总结(一)
面试题总结 1.#import 跟#include.@class有什么区别?#import<> 跟 #import""又什么区别? include和#import都能完 ...
- ButterKnife 8.2.1 大圣归来
零.前言 ButterKnife是一个视图注入的框架,主要帮我们解决无脑的findViewById.设置监听事件等等体力劳动. 一.引入 好消息是ButterKnife终于使用apt生成代码了,首先在 ...
- iOS Swift-简单值(The Swift Programming Language)
iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...
- 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
接上篇OWIN产生的背景以及简单介绍,在了解了OWIN规范的来龙去脉后,接下来看一下Katana这个OWIN规范的实现,并看看如何使用在我们的Web开发中. 阅读目录: 一. Katana项目的结构和 ...
- 使用强大的可视化工具redislive来监控我们的redis,别让自己死的太惨~~~
作为玩windows的码农,在centos上面装点东西,真的会崩溃的要死,,,我想大家也知道,在centos上面,你下载的是各种源代码,需要自己编译...而 使用yum的话,这个吊软件包有点想nuge ...