Spring中的JdbcTemplate使用(增删查改)
概述
JdbcTemplate是spring框架提供的一个对象,用来对原始的jdbc进行简单封装。与数据库进行交互,实现对表的CRUD(增删查改)操作。
数据库准备,创建一个表
我的表名chat_user
1.新建工程
也可以使用Maven工程,我用这个是懒得导入依赖,现成的包直接复制黏贴
导入jar包
WEB-INF下新建一个lib文件夹用来存放jar包
tx,test,jabc,mysql四个必须有
创建实体类
package com.entity;
public class User {
private String username;
private String password;
private String email;
public User() {
}
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
/**
* 获取
* @return username
*/
public String getUsername() {
return username;
}
/**
* 设置
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取
* @return password
*/
public String getPassword() {
return password;
}
/**
* 设置
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取
* @return email
*/
public String getEmail() {
return email;
}
/**
* 设置
* @param email
*/
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{username = " + username + ", password = " + password + ", email = " + email + "}";
}
}
进行CRUD操作
package com.jdbcTemplate;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class JdbcTemplateTest {
//添加用户信息
@Test
public void insertUser() {
// 1、配置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///chat_user? serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("123456");
// 2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3、通过jdbcTemplate对象执行数据库的crud操作
String sql = "insert into chat_user values(?, ?, ?)";
int rows = jdbcTemplate.update(sql, "李四", "123456","xxxx@163.com");
System.out.println("影响数据库行数:" + rows);
}
//修改用户信息
@Test
public void updateUser() {
// 1、配置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///chat_user? serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("123456");
// 2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3、通过jdbcTemplate对象执行修改操作
String sql = "update chat_user set password = ? where username = ?";
int rows = jdbcTemplate.update(sql, "987654", "abc");
System.out.println("影响数据库行数:" + rows);
}
//删除用户信息
@Test
public void deleteUser() {
// 1、配置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///chat_user? serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("123456");
// 2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3、通过jdbcTemplate对象执行数据库的crud操作
String sql = "delete from chat_user where username = ?";
int rows = jdbcTemplate.update(sql, "张三");
System.out.println("影响数据库行数:" + rows);
}
//查询用户信息
@Test
public void selectUser1() {
// 1、配置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///chat_user? serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
dataSource.setUsername("root"); dataSource.setPassword("123456");
// 2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3、通过jdbcTemplate对象执行修改操作
String sql = "select count(*) from chat_user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println("数据库表总共有" + count + "条记录");
}
}
查询结果为一个对象
jdbcTemplate未实现RowMapper,查询结果需要我们自己实现这个RowMapper接口,自己封装查询后的结果。
创建RowMapper接口的实现类
package com.jdbcTemplate;
import com.entity.User;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MyRowMapper implements RowMapper {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
String username = resultSet.getString("username");
String password = resultSet.getString("password");
String email = resultSet.getString("email");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
return user;
}
}
JdbcTemplateTest运行结果