Spring JDBC
Spring框架对JDBC的简单封装。提供了一个JdbcTemplate对象简化JDBC的开发(后面专门讲spring框架)
1. 导入jar包 4 + 1
2. 创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(ds);
3. 调用JdbcTemplate的方法来完成CRUD的操作
update():执行DML语句。增、删、改语句
queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
注意:这个方法查询的结果集长度只能是1
queryForList():查询结果将结果集封装为list集合
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
query():查询结果,将结果封装为JavaBean对象
query的参数:RowMapper
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
queryForObject:查询结果,将结果封装为对象
一般用于聚合函数的查询
package com.suyv.template;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.suyv.druid.DruidDemo01;
import com.suyv.pojo.User;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 14:17
* @Description: JdbcTemplate 的初使用
*/
public class JdbcTemplateDemo01 {
public static void main(String[] args) throws Exception {
// 1.导入jar包
// 使用Druid连接池
Properties properties = new Properties();
properties.load(JdbcTemplateDemo01.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 2.创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 3.调用方法
String sql = "select * from user";
List users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
for (User user : users) {
System.out.println(user);
}
}
}
工具类的准备:
package com.suyv.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.suyv.template.JdbcTemplateDemo01;
import javax.sql.DataSource;
import java.util.Properties;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 15:31
* @Description: 获取Druid连接池
*/
public class JdbcUtil {
public static DataSource getDataSource(){
// 使用Druid连接池
Properties properties = new Properties();
DataSource dataSource = null;
try {
properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
return dataSource;
}
}
}
增删改测试:
package com.suyv.update;
import com.suyv.util.JdbcUtil;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 15:35
* @Description: JdbcTemplate的update()的使用
*/
public class TemplateUpdate01 {
// 添加用户
@Test
public void addUser(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "insert into user values(null,?,?)";
int num = jdbcTemplate.update(sql, "懒羊羊", "123456");
if (num > 0){
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
}
// 修改用户信息
@Test
public void updateUser(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "update user set password = ? where username = ?";
int num = jdbcTemplate.update(sql, "admin", "懒羊羊");
if (num > 0){
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
}
// 删除用户
@Test
public void deleteUser(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "delete from user where id = ?";
int num = jdbcTemplate.update(sql, 1);
if (num > 0){
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
}
}
工具类准备:
package com.suyv.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.suyv.template.JdbcTemplateDemo01;
import javax.sql.DataSource;
import java.util.Properties;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 15:31
* @Description: 获取Druid连接池
*/
public class JdbcUtil {
public static DataSource getDataSource(){
// 使用Druid连接池
Properties properties = new Properties();
DataSource dataSource = null;
try {
properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
return dataSource;
}
}
}
package com.suyv.query;
import com.suyv.pojo.User;
import com.suyv.util.JdbcUtil;
import org.junit.Test;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Map;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 15:45
* @Description: 查询单行数据
*/
public class TemplateQuery01 {
// queryforMap()的使用
@Test
public void Test01(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "select * from user where id = ?";
Map map = jdbcTemplate.queryForMap(sql,6);
System.out.println(map);
}
// queryforObject()的使用
@Test
public void Test02(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "select * from user where id = ?";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), 6);
System.out.println(user);
}
// queryforObject()的使用--返回查询条数
@Test
public void Test03(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "select count(*) from user";
int num = jdbcTemplate.queryForObject(sql,Integer.class);
System.out.println(num);
}
// queryforObject()的使用--异常情况
// 查询不到数据会发生异常
@Test
public void Test04(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "select * from user where id = ?";
User user = null;
try {
user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), 8);
} catch (DataAccessException e) {
System.out.println("暂未该学号的学生");
} finally {
if (user != null){
System.out.println(user);
}
}
}
}
package com.suyv.query;
import com.suyv.pojo.User;
import com.suyv.util.JdbcUtil;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
/**
* @Author: 憨憨浩浩
* @CreateTime: 2024-01-11 15:57
* @Description: 查询多行数据
*/
public class TemplateQuery02 {
// queryforList()的使用
@Test
public void Test01(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtil.getDataSource());
String sql = "select * from user";
List