likes
comments
collection
share

Jdbc Template 快速入门

作者站长头像
站长
· 阅读数 71

写在前面👀

今天主要讲讲JDBC Template的使用方法

一、什么是Jdbc Template

JdbcTemplate是Spring框架对JDBC的封装。JdbcTemplate处理了资源的建立和释放;他帮助我们避免一些常见的错误,比如忘了总要关闭连接;他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。

二、Jdbc Template使用步骤

1.导入jar包

  1. commons-logging-1.2.jar
  2. spring-beans-5.0.0.RELEASE.jar
  3. spring-core-5.0.0.RELEASE.jar
  4. spring-jdbc-5.0.0.RELEASE.jar
  5. 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️⃣需求

  1. 修改路飞fruit果实为橡胶果实
  2. 添加一条op人物记录
  3. 删除刚才添加的记录
  4. 查询查询id为1的记录,将其封装为Map集合
  5. 查询所有记录,将其封装为List
  6. 查询所有记录,将其封装为OP对象的List集合
  7. 查询最高赏金数

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, "路飞");
}
  • 演示结果如下👇Jdbc Template 快速入门

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);
}
  • 演示结果如下👇Jdbc Template 快速入门

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);
}

  • 演示结果如下👇Jdbc Template 快速入门

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);
}
  • 演示结果如下👇Jdbc Template 快速入门

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);
    }
}
  • 演示结果如下👇Jdbc Template 快速入门

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);
    }
}
  • 演示结果如下👇Jdbc Template 快速入门

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);
}
  • 演示结果如下👇Jdbc Template 快速入门

写在后面🍻

转载自:https://juejin.cn/post/7086762893676544030
评论
请登录