Jdbc Template 快速入门
写在前面👀
今天主要讲讲JDBC Template的使用方法
一、什么是Jdbc Template
JdbcTemplate是Spring框架对JDBC的封装。JdbcTemplate处理了资源的建立和释放;他帮助我们避免一些常见的错误,比如忘了总要关闭连接;他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。
二、Jdbc Template使用步骤
1.导入jar包
- commons-logging-1.2.jar
- spring-beans-5.0.0.RELEASE.jar
- spring-core-5.0.0.RELEASE.jar
- spring-jdbc-5.0.0.RELEASE.jar
- spring-tx-5.0.0.RELEASE.jar
2.创建JdbcTemplate对象
- 依赖于数据源DataSource
3.调用JdbcTemplate的方法来完成CRUD的操作
execute( )
:可以执行所有SQL语句,一般用于执行DDL语句。update(String, Object...)
: 用于执行INSERT、UPDATE、DELETE等DML语句batchUpdate(String, List<Object[]>)
:批量增删改queryForMap( )
:查询单行记录,将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合- 注意:queryForMap( ) 方法查询的结果集长度只能是1
query(String, RowMapper<Department>, Object...)
:查询多行记录,将查询结果封装为JavaBean对象- query的参数:RowMapper
- 一般使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装
- new BeanPropertyRowMapper<类型>(类型.class)
queryForObject(String, Class, Object...)
:查询单一值,将查询结果封装为对象- 一般用于聚合函数的查询
三、举个栗子
1️⃣需求
- 修改路飞的fruit果实为橡胶果实
- 添加一条op人物记录
- 删除刚才添加的记录
- 查询查询id为1的记录,将其封装为Map集合
- 查询所有记录,将其封装为List
- 查询所有记录,将其封装为OP对象的List集合
- 查询最高赏金数
2️⃣Junit单元测试
0.获取JdbcTemplate对象
//0.获取JdbcTemplate对象
private JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtils.getDataSource());
1.修改操作
/**
* 1.修改路飞的fruit果实为橡胶果实
*/
@Test
public void test1() {
//1.1定义SQL语句
String sql = "update op set fruit='橡胶果实' where name=? ";
jdbcTemplate.update(sql, "路飞");
}
- 演示结果如下👇
2.添加操作
/**
* 2.添加一条op人物记录
*/
@Test
public void test2(){
//2.1定义SQL语句
String sql = "insert into op(name,gender,fruit,reward,ity_id) values (?,?,?,?,?)";
//2.2执行sql
jdbcTemplate.update(sql,"马尔科",1,"鸟鸟果实-幻兽种-不死鸟形",1374000000,1);
}
- 演示结果如下👇
3.删除操作
/**
* 3.删除刚才添加的记录
*/
@Test
public void test3(){
//2.1定义SQL语句
String sql = "delete from op where name=?";
//2.2执行sql
int count =jdbcTemplate.update(sql,"马尔科");
System.out.println("受影响行数:"+count);
}
- 演示结果如下👇
4.查询单行记录
/**
* 4.查询查询id为1的记录,将其封装为Map集合
*/
@Test
public void test4() {
//4.1定义SQL语句
String sql = "select * from op where id=?";
//4.2执行sql
Map<String, Object> map = jdbcTemplate.queryForMap(sql, 1);
System.out.println(map);
}
- 演示结果如下👇
5.查询多行记录
/**
* 5.查询所有记录,将其封装为List
*/
@Test
public void test5(){
//5.1定义SQL语句
String sql="select * from op";
//5.2执行sql
List<Map<String, Object>> mapList=jdbcTemplate.queryForList(sql);
for(Map<String, Object> valueMap:mapList){
System.out.println(valueMap);
}
}
- 演示结果如下👇
6.将记录封装为JavaBean
/**
* 6.查询所有记录,将其封装为op对象的List集合
*/
@Test
public void test6(){
//6.1定义SQL语句
String sql = "select * from op";
//6.2执行sql
List<op> opList=jdbcTemplate.query(sql,new BeanPropertyRowMapper<op>(op.class));
for(op opValue:opList ){
System.out.println(opValue);
}
}
- 演示结果如下👇
7.查询单一数值
/**
* 7.查询最高赏金数
*/
@Test
public void test7(){
//7.1定义SQL语句
String sql = "select max(reward) from op";
//7.2执行sql
Long maxReward = jdbcTemplate.queryForObject(sql,Long.class);
System.out.println("最高赏金:"+maxReward);
}
- 演示结果如下👇
写在后面🍻
转载自:https://juejin.cn/post/7086762893676544030