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 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- Java基本概念(1)什么是Java
什么是Java Java是一种开发语言(核心特点:跨平台,面向对象,名称由来看这里:J2EE里面的2是什么意思),对于开发者来讲,Java基本等于Jdk. Jdk的版本介绍看这里:Java都有那些版本 ...
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...
- BaseAdapter的抽取
为了更方便高效的使用BaseAdapter,特意抽取了一下,下面是简单的结构图: 需要4个类: [MyBaseAdapter3]: public abstract class MyBaseAdapte ...
- 【系统架构】IT职业技能图谱(点开大图查看)
本文地址 1 程序开发语言综述 2 iOS开发工程师必备技能 3 运维工程师必备技能 4 前端工程师必备技能 5 大数据工程师必备技能 6 云计算工程师必备技能 7 安全工程师必备技能 8 移动无线测 ...
- ABP 初探 之基于EasyUI的CURD
结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最 ...
- 解决eclipse配置Tomcat时找不到server选项(Mac通用)
集成Eclipse和Tomcat时找不到server选项: 按照网上的步骤如下: 在Eclipse中,窗口(window)——首选项(preferences)——服务器(Server)——运行时环境( ...
- Javascript中prototype属性详解
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
- dojo.require()的相关理解
Dojo 提供了一个非常强大的javascript控件库. 在使用dojo之前,用户基本上不需要具备任何基础知识. 你可以用script远程链接到dojo(dojo.js), 也可以把dojo.js下 ...
- 谷歌电子市场1--BaseFragment
1.BaseFragment 共性 加载中加载失败数据为空加载成功 2.loadData调用 3.网络封装 请求网络获取数据缓存机制(写缓存和读缓存)解析数据请求网络前,先判断是否有缓存, 有的话就加 ...
- 全局响应MotionEvent
遇到这样一个需求:应用无论处于哪个view controller,摇动手机,都能够出发某一方法. 能够想到的思路就是用苹果封装好的“MotionEvent”,但是如果简单的把一下代码加到某一view ...