一、JdbcTemplate概述
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
二、JdbcTemplate开发步骤
(1)引入jar
jdbc的jar
spring-tx
mysql的驱动包选择5.1.6.
druid连接池的包。
还有其他基本包。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
配置jdbc.properties:()和mysql5.1.6搭配使用
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8
jdbc.username=root
jdbc.password=root
(2)spring配置文件的编写,配置数据库连接池,配置jdbcTemplate对象,注入DataSource:
db.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8
jdbc.username=root
jdbc.password=root
spring配置文件:在容器中生产各种对象bean,然后等待被注入使用
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--1.加载properties配置文件-->
<context:component-scan base-package="com.fan"></context:component-scan>
<context:property-placeholder location="classpath:db8.properties" ></context:property-placeholder>
<!--2.设置数据源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>
<!--3.将数据源配到jdbcTemplate中-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--设置属性-->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
Spring产生JdbcTemplate对象
我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,配置如下:
(3)创建service实现类,创建dao类,在dao类注入jdbcTemplate对象。
数据库:
实体类User(对应数据库的一张表t_user):
package com.fan.domain;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component//实体类
public class User {
private Integer id;
private String userName;
private Integer age;
private String addr;
private Date birthday;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", age=" + age +
", addr='" + addr + '\'' +
", birthday=" + birthday +
'}';
}
}
dao的实现类:
package com.fan.dao.impl;
import com.fan.dao.UserDao;
import com.fan.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired//类型注入
private JdbcTemplate jdbcTemplate;
//增加
public void addUser(User user) {
String sql = "insert into t_user (username) values (?);";
int update = jdbcTemplate.update(sql, user.getUserName());
System.out.println(update);
}
//修改
public void updateUser(User user){
String sql = "UPDATE t_user set username=?,age=? where id=?";
int update = jdbcTemplate.update(sql, user.getUserName(), user.getAge(), user.getId());
System.out.println(update);
}
//删除
public void delUser(Integer id) {
String sql ="delete from t_user where id=?";
int update = jdbcTemplate.update(sql, id);
System.out.println(update);
}
}
userService的实现类:
package com.fan.service.impl;
import com.fan.dao.UserDao;
import com.fan.domain.User;
import com.fan.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired//类型注入
private UserDao userDao;
public void addUser(User user) {
userDao.addUser(user);
}
public void updateUser(User user) {
userDao.updateUser(user);
}
public void delUser(Integer id) {
userDao.delUser(id);
}
}
测试类:
import com.fan.dao.UserDao;
import com.fan.dao.impl.UserDaoImpl;
import com.fan.domain.User;
import com.fan.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.SQLException;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")//注解形式加载xml文件
@Component
public class TestJdbc {
@Resource//注入service对象
private UserService userService;
//测试数据源连接
@Resource(name = "dataSource")
private DataSource dataSource;
@Test//1.测试数据库的连接
public void getConnection2() throws SQLException {
System.out.println(dataSource);
System.out.println(dataSource.getConnection());
}
@Test//测试增加
public void test01(){
//手动形式加载xml文件
/*ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = context.getBean("userDao", UserDao.class);*/
System.out.println(userService);
User user = new User();
user.setUserName("李四测试5");
userService.addUser(user);
}
@Test//测试修改
public void test02(){
User user = new User();
user.setUserName("李四测试888");
user.setId(1);
user.setAge(88);
userService.updateUser(user);
}
@Test//测试删除
public void test03(){
userService.delUser(6);
}
}
三、JdbcTemplate的常用操作
(4.1)添加修改删除都是使用update方法:
代码:
(4.2)查询记录数:
查询单个对象:
查询返回对象集合:
批量添加:
批量修改:类似于批量增加
批量删除:
https://www.boxuegu.com/news/2912.html