SSM-Spring-19:Spring中JdbcTemplate
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
Spring自带一个ORM持久化框架JdbcTemplate,他可以说是jdbc的加强版,但是对最细微的控制肯定做不到像jdbc那么细,那么性能高,他的出现是为了让jdbc更加便于使用
下面我说一下我这篇博客要干嘛,
一,简单的JdbcTemplate做出来的案例
二,除了自带的Spring-jdbc,补充c3p0,druid,dbcp三种DataSource数据源
1.案例查询图书
1.1数据表:
接下来就是java程序开发工具idea做的事了
1.2引入依赖jar包:
以前的jar包外,还需要spring-jdbc和jdbc的mysql的jar
<!--spring jdbc-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3..RELEASE</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.</version>
</dependency>
1.3分层开发开始,先是entity实体类层
Book
package cn.dawn.day21jdbctemplate.entity; public class Book {
private Integer bookID;
private String bookName;
private String bookAuthor;
private Integer bookPrice; @Override
public String toString() {
return "Book{" +
"bookID=" + bookID +
", bookName='" + bookName + '\'' +
", bookAuthor='" + bookAuthor + '\'' +
", bookPrice=" + bookPrice +
'}';
} public Book() {
} public Integer getBookID() {
return this.bookID;
} public void setBookID(Integer bookID) {
this.bookID = bookID;
} public String getBookName() {
return this.bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getBookAuthor() {
return this.bookAuthor;
} public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
} public Integer getBookPrice() {
return this.bookPrice;
} public void setBookPrice(Integer bookPrice) {
this.bookPrice = bookPrice;
}
}
1.3dao层
一个接口IBookDAO
package cn.dawn.day21jdbctemplate.dao; import cn.dawn.day21jdbctemplate.entity.Book; import java.util.List; /**
* Created by Dawn on 2018/3/13.
*/
public interface IBookDAO {
public List<Book> findAllBooks();
}
它的实现类BookDAOImpl
package cn.dawn.day21jdbctemplate.dao; import cn.dawn.day21jdbctemplate.entity.Book;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; /**
* Created by Dawn on 2018/3/13.
*/
public class BookDAOImpl extends JdbcDaoSupport implements IBookDAO {
public List<Book> findAllBooks() {
String sql="select * from book";
List<Book> lists = this.getJdbcTemplate().query(sql, new RowMapper<Book>() {
public Book mapRow(ResultSet rs, int i) throws SQLException {
Book book=new Book();
book.setBookAuthor(rs.getString("bookAuthor"));
book.setBookID(rs.getInt("bookId"));
book.setBookName(rs.getString("bookName"));
book.setBookPrice(rs.getInt("bookPrice"));
return book;
}
});
return lists;
}
}
这儿有几点要说的,他实现了JdbcTemplate,是为了一会给这个类注入数据源等操作,子类继承了父类的方法属性,所以这个类才能和数据库打交道
ResultSet就是数据库的单行记录,i就是此单行记录是符合你查出来的中的第几条,先把案例配通
1.4service层
一个接口IBookService
package cn.dawn.day21jdbctemplate.service; import cn.dawn.day21jdbctemplate.entity.Book; import java.util.List; /**
* Created by Dawn on 2018/3/13.
*/
public interface IBookService {
public List<Book> findAllBooks();
}
它的实现类BookService
package cn.dawn.day21jdbctemplate.service; import cn.dawn.day21jdbctemplate.dao.IBookDAO;
import cn.dawn.day21jdbctemplate.entity.Book; import java.util.List; /**
* Created by Dawn on 2018/3/13.
*/
public class BookServiceImpl implements IBookService{
private IBookDAO dao; public List<Book> findAllBooks() {
return dao.findAllBooks();
} public IBookDAO getDao() {
return dao;
} public void setDao(IBookDAO dao) {
this.dao = dao;
}
}
dao层的接口声明成成员变量,并且提供get/set方法,一会要注入进来dao层的实现
1.5我做了个一步到位的操作,将Driver,url,username,pwd这些jdbc连接数据库的条件提到了propertiess文件中
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///s2228
jdbc.username=root
jdbc.password=
1.6就是书写大配置文件了
起名随意,一会单测方法中能合的上就行,以.xml结尾
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
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"> <!--配置jdbc。properties-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <!--自带的持久化框架的数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean> <!--配置jdbctemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean> <!--dao-->
<bean id="bookDao" class="cn.dawn.day21jdbctemplate.dao.BookDAOImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean> <!--service-->
<bean id="bookService" class="cn.dawn.day21jdbctemplate.service.BookServiceImpl">
<property name="dao" ref="bookDao"></property>
</bean>
</beans>
1.7书写测试方法
package cn.dawn.day21JdbcTemplate; import cn.dawn.day21jdbctemplate.entity.Book;
import cn.dawn.day21jdbctemplate.service.IBookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; /**
* Created by Dawn on 2018/3/3.
*/
public class test20180313 {
@Test
/*aop代理工厂bean异常增强*/
public void t01(){
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext-day21JdbcTemplate.xml");
IBookService service = (IBookService) context.getBean("bookService");
List<Book> allBooks = service.findAllBooks();
for (Book item:allBooks) {
System.out.println(item);
} }
}
案例完
下面说说另外三种数据源的配置,不同公司使用的不是完全一样,所以我提及几种,使用方法,在上方的案例中只要引入jar包,把xml中dateSource那个bean替换掉就好
1.dbcp
1.1引入jar包
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.</version>
</dependency>
1.2xml文件中的dataSource
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
2.c3p0
2.1jar包
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
2.2xml中
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
3.druid 这个是中国阿里巴巴开发的
3.1jar包
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.</version>
</dependency>
3.2xml文件中
<!--阿里的Druid-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
SSM-Spring-19:Spring中JdbcTemplate的更多相关文章
- Spring中JdbcTemplate的基础用法
Spring中JdbcTemplate的基础用法 1.在DAO中使用JdbcTemplate 一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可. 在 ...
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- 2018.12.25 Spring中JDBCTemplate模版API学习
1 Spring整合JDBC模版 1.1 spring中土拱了一个可以操作数据库的对象.对象封装了jdbc技术 JDBCTemplateJDBC模板对象 1.2 与DBUtils中的QueryRunn ...
- SSM框架之Spring(5)JdbcTemplate及spring事务控制
Spring(5)JdbcTemplate及spring事务控制 ##1.JdbcTmeplate 它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装.spring ...
- SSM(spring mvc+spring+mybatis)学习路径——1-2、spring事务管理
目录 1-2 Spring事务管理 概念介绍 事务回顾 事务的API介绍 Spring 事务管理 转账案例 编程式事务管理 声明式事务管理 使用XML配置声明式事务 基于tx/aop 使用注解配置声明 ...
- JDK、Spring和Mybatis中使用到的设计模式
一.JDK中的设计模式 (1)结构性模式 1.适配器模式 java.util.Arrays#asList() java.io.InputStreamReader(InputStream) java.i ...
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程重要
前言 SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不知道大家有没有留意,在我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教 ...
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...
- [原创]java WEB学习笔记109:Spring学习---spring中事物管理
博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好 ...
随机推荐
- ANDROID 中设计模式的采用--行为模式
1 职责链模式 职责链模式的意图为:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.使多个对象都有 ...
- 苹果新的编程语言 Swift 语言进阶(十三)--类型检查与类型嵌套
一 类型检查 1. 类型检查操作符 类型检查用来检查或转换一个实例的类型到另外的类型的一种方式. 在Swift中,类型检查使用is和as操作符来实现. is操作符用来检查一个实例是否是某种特定类型,如 ...
- Paxos 算法
1 概述 Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法.[1] ...
- Select、Poll与Epoll比较
(1)select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志 ...
- Spring Boot缓存应用实践
缓存是最直接有效提升系统性能的手段之一.个人认为用好用对缓存是优秀程序员的必备基本素质. 本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统. 一.通用缓存接口 1.缓 ...
- Java数据结构面试题,输出 最后一个 出现次数为1的字符
今天去面试,遇到一个数据结构题,给定一个字符串,输出 最后一个 出现次数为1的字符 回来研究了下,代码如下: package com.pine.interview.test; import java. ...
- 三、编辑 Update set
文档目录 开始使用 初始化查询实例: LambdaToSql.SqlClient DB = new LambdaToSql.SqlClient(); 更新单个实体对象,必须有主键Guid var e ...
- htmlDOM操作1
DOM 是 Document Object Model(文档对象模型)的缩写. HTML 的标准对象模型 HTML 的标准编程接口 HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它 ...
- 运行ant脚本(转载)
http://blog.csdn.net/linwei_1029/article/details/5809801 运行ANT脚本的步骤 1.右击我的电脑-->属性-->高级-->环境 ...
- java并发包分析之———AQS框架
一.什么是同步器 多线程并发的执行,之间通过某种 共享 状态来同步,只有当状态满足 xxxx 条件,才能触发线程执行 xxxx . 这个共同的语义可以称之为同步器.可以认为以上所有的锁机制都可以基 ...