Spring(十)Spring JDBCTemplate
JdbcTemplate是Spring提供的一个请有力的模板类,他简化了JDBC的操作,DateSource对象与末班JdbcTemplate对象均可以通过Bean的形式定义在配置文件中,充分发挥了依赖注入的威力!!!下面通过一个例子来使用一下JdbcTemplate
案例:查询所有图书
首先创建数据表

开始编写代码:
第一步:引入jar Spring-jdbc,引入这个jar之后会引带这将事务的包也引进来
<!--jdbc-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
第二步:创建实体类Book在entity包下
package demoJDBC.entity;
/**
* Created by mycom on 2018/1/29.
*/
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 Integer getBookID() {
return bookID;
}
public void setBookID(Integer bookID) {
this.bookID = bookID;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public Integer getBookPrice() {
return bookPrice;
}
public void setBookPrice(Integer bookPrice) {
this.bookPrice = bookPrice;
}
}
第三步:创建Dao层
接口:
package demoJDBC.dao;
import demoJDBC.entity.Book;
import java.util.List;
/**
* Created by mycom on 2018/3/12.
*/
public interface IBookDao {
public List<Book> findAll();
}
Dao实现类
package demoJDBC.dao;
import demoJDBC.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 mycom on 2018/3/12.
*/
public class BookDaoImpl extends JdbcDaoSupport implements IBookDao {
public List<Book> findAll() {
//sql
String sql="select * from book";
List<Book> list = this.getJdbcTemplate().query(sql, new RowMapper<Book>() {
public Book mapRow(ResultSet rs, int i) throws SQLException {
//创建一个Book对象
Book book = new Book();
book.setBookID(rs.getInt("bookID"));
book.setBookName(rs.getString("bookName"));
/* book.setBookAuthor(rs.getString("bookAuthor"));
book.setBookPrice(rs.getInt("bookPrice"));*/
return book;
}
});
return list;
}
}
第四步:创建service层
接口:
package demoJDBC.service;
import demoJDBC.entity.Book;
import java.util.List;
/**
* Created by mycom on 2018/3/13.
*/
public interface IBookService {
public List<Book> findAll();
}
接口的实现类
package demoJDBC.service;
import demoJDBC.dao.BookDaoImpl;
import demoJDBC.entity.Book;
import java.util.List;
/**
* Created by mycom on 2018/3/13.
*/
public class BookServiceImpl implements IBookService {
BookDaoImpl book;
public BookDaoImpl getBook() {
return book;
}
public void setBook(BookDaoImpl book) {
this.book = book;
}
public List<Book> findAll() {
return book.findAll();
}
}
第五步:在resources下创建jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql:///book jdbc.username=root jdbc.password=
第六步:配置xml文件applicationContextJDBCTemplate.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: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">
<!--配置数据源-->
<!--配置1-->
<bean id="dateSource" 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>
<!--<!–配置2–>
<bean id="dateSource" 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>-->
<!--<!–配置3–>
<bean id="dateSource" 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>-->
<!--配置4-->
<!--<bean id="dateSource" 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>-->
<!--识别到jdbc.properties-->
<!--配置1-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--配置2-->
<!--<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>-->
<!--配置jdbcTemeplate-->
<bean id="jdbcTemeplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dateSource"></property>
</bean>
<!--配置Dao-->
<bean id="bookDao" class="demoJDBC.dao.BookDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemeplate1"></property>
</bean>
<!--service id-->
<bean id="bookService" class="demoJDBC.service.BookServiceImpl">
<property name="book" ref="bookDao"></property>
</bean>
</beans>
配置文件中配置数据源的方法有四种,配置JDBC的文件的有两种,下面我在提出来分别写一下
(1)配置数据源
1)Spring内置的 DriverManagerDataSource(很少用)
<bean id="dateSource" 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>
2)DBCP 它时apache下的(公司比较常用),这种方式需要引入jar
<!--dbcp2-->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
或者是
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
版本问题的话就自己更换版本吧
<bean id="dateSource" 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>
3)c3p0 (公司比较常用),这种方式需要引入jar
<!--c3p0-->
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<bean id="dateSource" 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>
4)阿里巴巴的 druid
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
<bean id="dateSource" 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>
(2)配置JDBC的两种方法
<!--配置2-->
<!--<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>-->
<!--识别到jdbc.properties-->
<!--配置1-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
最后一步:编写测试方法
import demo03.ISomeService;
import demoJDBC.entity.Book;
import demoJDBC.service.IBookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
/**
* Created by mycom on 2018/3/11.
*/
public class TestDemoJDBC {
@Test
public void t1(){
//获取对象
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContextJDBCTemplate.xml");
//调用方法,这里要返回类
IBookService bookService =(IBookService) context.getBean("bookService");
List<Book> all = bookService.findAll();
for (Book book:all) {
System.out.println(book.getBookName());
}
}
}

浙公网安备 33010602011771号