Spring JDBC
* Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发
步骤
- 导入jar包
- 创建JDBCTemplate对象,依赖于数据源DataSource
- JdbcTemplate template=new JdbcTemplate(datasource);
- 调用JDBCTemplate的方法来完成CRUD的操作
- update():执行DML语句。增删查改
- queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
- queryForList():查询结果将结果集封装为list集合
- 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
- query():查询结果,将结果封装为JavaBean对象
- query的参数:RowMapper
- 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
- new BeanPropertyRowMapper<类型>(类型.class)
- queryForObject():查询结果,将结果封装为对象
代码如下
package cn.itcast.jdbctemplate;
import cn.itcast.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateDemo1 {
public static void main(String[] args){
JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
String sql="update account set balance=2000 where id=?";
int count =template.update(sql,3);
System.out.println(count);
}
}
练习
需求
1.修改1号数据的salary为10000
2.添加一条数据
3.删除刚才添加的记录
4.查询id为1的记录,将其封装为Map集合
5.查询所有记录,将其封装为List
6.查询所有记录,将其封装为Emp对象的List集合
7.查询总记录数
代码如下
package cn.itcast.jdbctemplate;
import cn.itcast.domain.Emp;
import cn.itcast.utils.JDBCUtils;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class JdbcTemplateDemo2 {
private JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
@Test
public void test1(){
String sql="update emp set sarlary=10000 where id=?";
int count =template.update(sql,1001);
System.out.println(count);
}
@Test
public void test2(){
String sql="insert into emp(id,ename,dept_id) values(?,?,?)";
int count =template.update(sql,1015,"guoj",10);
System.out.println(count);
}
@Test
public void test3(){
String sql="delete from emp where id=?";
int count =template.update(sql,1015);
System.out.println(count);
}
@Test
public void test4(){
String sql="select * from emp where id=?";
Map<String,Object> map =template.queryForMap(sql,1001);
System.out.println(map);
}
@Test
public void test5(){
String sql="select * from emp where id=? or id=?";
List<Map<String,Object>> list=template.queryForList(sql,1001,1002);
for (Map<String,Object> stringObjectMap:list){
System.out.println(stringObjectMap);
}
}
@Test
public void test6(){
String sql="select * from emp ";
List<Emp> list=template.query(sql, new RowMapper<Emp>() {
@Override
public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
int id=resultSet.getInt("id");
String ename=resultSet.getString("ename");
int job_id=resultSet.getInt("job_id");
int mgr=resultSet.getInt("mgr");
Date joindate=resultSet.getDate("joindate");
double salary=resultSet.getDouble("sarlary");
double bonus=resultSet.getDouble("bonus");
int dept_id=resultSet.getInt("dept_id");
Emp emp=new Emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id);
return emp;
}
});
for (Emp emp:list){
System.out.println(emp);
}
}
@Test
public void test6_2(){
String sql="select * from emp ";
List<Emp> list=template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp emp:list){
System.out.println(emp);
}
}
@Test
public void test7(){
String sql="SELECT COUNT(id) FROM emp";
Long total=template.queryForObject(sql,Long.class);
System.out.println(total);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律