Spring JDBC封装类JdbcTemplate基础案例
一、JdbcTemplate类介绍
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作 模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。
二、JdbcTemplate常用方法
1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;
3、batchUpdate方法用于执行批处理相关语句;
4、query方法及queryForXXX方法:用于执行查询相关语句;
5、call方法:用于执行存储过程、函数相关语句。
三、JdbcTemplate开发步骤
1、调用Spring JDBC类库,需要在Spring基础上导入spring-jdbc.jar、spring-tx.jar和mysql-connector-java-5.0.4-bin.jar
2、创建数据库表和实体
3、创建JdbcTemplate对象
4、执行数据库操作
四、案例开发
1、项目架构

2、数据库表结构

3、显示数据表数据

4、创建实体类,用于传递值
package lhs.pojo;
public class User {
private int bh;
private String name;
private double cj;
public int getBh() {
return bh;
}
public void setBh(int bh) {
this.bh = bh;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getCj() {
return cj;
}
public void setCj(double cj) {
this.cj = cj;
}
}
5、创建Service类,实现调用JdbcTemplate类方法,完成新增数据、修改数据、删除数据、显示单个记录集、显示多个记录集。
package lhs.service;
import lhs.pojo.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.util.List;
public class UserService {
private JdbcTemplate jdbcTemplate;
//修改数据
public void updateUser(User user){
String sql="update user set name=?,cj=? where bh=?";
jdbcTemplate.update(sql,user.getName(),user.getCj(),user.getBh());
System.out.println("数据修改成功");
}
//新增数据
public void addUser(User user){
String sql="insert into user (name,cj) values (?,?)";
jdbcTemplate.update(sql,user.getName(),user.getCj());
System.out.println("数据新增成功");
}
//删除数据
public void delUser(int bh){
String sql="delete from user where bh=?";
jdbcTemplate.update(sql,bh);
System.out.println("数据删除成功");
}
//显示所有数据
public List<User> showAllUser(){
String sql="select bh,name,cj from user";
List<User> list=jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(User.class));
return list;
}
/**
* 1、使用BeanProperytRowMapper要求sql数据查询出来的列和实体属性需要一一对应。
* 如果数据中列明和属性名不一致,在sql语句中需要用as重新取一个别名
** 2、使用JdbcTemplate对象不能获取关联对象
*/
// 显示单个数据
public User getUserByBh(int bh){
String sql="select bh,name,cj from user where bh=?";
RowMapper<User> rowMapper=new BeanPropertyRowMapper<>(User.class);
User user=jdbcTemplate.queryForObject(sql,rowMapper,bh);
return user;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
6、bean.xml文件配置,导入Spring 封装类
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 初始化数据源,JdbcTemplate框架实现 -->
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/student"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean class="lhs.service.UserService" id="userService">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>
7、实现测试类,调用Service,执行数据操作
package lhs.test;
import lhs.pojo.User;
import lhs.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class TestUser {
public static void main(String args[]){
ApplicationContext factory=new ClassPathXmlApplicationContext("bean.xml");
UserService userService=(UserService) factory.getBean("userService");
try{
//修改数据
User user=new User();
user.setBh(7);
user.setName("千古");
user.setCj(99);
userService.updateUser(user);
//新增数据
User user1=new User();
user1.setName("雷锋");
user1.setCj(87);
userService.addUser(user1);
//删除数据
int bh=10;
userService.delUser(bh);
//显示所有数据
List<User> list=userService.showAllUser();
for(int i=0;i<list.size();i++){
User user2=list.get(i);
System.out.println("编号是:"+user2.getBh());
System.out.println("姓名是:"+user2.getName());
System.out.println("成绩是:"+user2.getCj());
System.out.println("===========");
}
//显示单个实体对象
User user3=userService.getUserByBh(12);
System.out.println("单个对象获取,姓名是--"+user3.getName()+"成绩是--"+user3.getCj());
}catch (Exception e){
e.printStackTrace();
}
}
}
8、执行结果
