JdbcTemplate

JdbcTemplate 是 Spring 框架提供的一个用于简化 JDBC 操作的类。它处理了资源的创建和释放,使得开发者能够更专注于 SQL 语句本身和结果的处理。JdbcTemplate 提供了大量的方法,用于执行各种类型的 SQL 语句,包括查询、更新、批处理、调用存储过程等。

  1. 导入jar包
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>

    <!--    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>-->

如果导入了mybatis-plus-boot-starter,在该包内也包括spring-boot-starter-jdbc,所以我可以注释.
2. 查询

@Test
    void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate) {
        String sql = "select * from tbl_book where id =3";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        System.out.println("哈哈" + maps);
    }
  1. 实体类
package com.atheima.domain;

import lombok.Data;

@Data
public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;
}
  1. 查询方法2
    @Test
    void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate) {
        String sql = "select * from tbl_book where id =3";
/*        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        System.out.println("哈哈" + maps);*/


        RowMapper<Book> rm = new RowMapper<Book>() {
            @Override
            public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
                Book book = new Book();
                book.setId(rs.getInt("id"));
                book.setName(rs.getString("name"));
                book.setType(rs.getString("type"));
                book.setDescription(rs.getString("description"));
                return book;
            }
        };
        List<Book> queryList = jdbcTemplate.query(sql, rm);
        System.out.println(queryList);
    }

RowMapper是Spring JDBC模板中用于将数据库查询结果集的每一行数据映射到用户自定义的Java对象的一个接口。它大大简化了JDBC操作,使得开发者可以将更多的精力放在业务逻辑上,而不是繁琐的数据转换上。
RowMapper是一个接口,它包含一个mapRow方法,该方法的签名如下:

Object mapRow(ResultSet rs, int rowNum) throws SQLException;
ResultSet rs:当前行的数据。
int rowNum:当前行的行号(从1开始)。
返回值:一个Java对象,表示当前行的数据。

使用JdbcTemplate的query方法执行SQL查询,并将查询结果集传递给UserRowMapper进行处理。最终,方法返回一个包含所有用户信息的List

  • 注意事项
    1.确保Java对象的属性名与数据库表的列名相匹配,或者提供自定义的映射规则。
    如果数据库列名和Java对象属性名之间存在不匹配的情况,可以使用SQL查询中的别名来解决。
  1. 确保Java对象具有无参构造函数,因为RowMapper会使用它来创建对象实例。
  2. 确保Java对象的属性具有公共的getter和setter方法,因为RowMapper会使用它们来访问和设置属性值。
posted @ 2024-07-31 11:01  文采杰出  阅读(3)  评论(0编辑  收藏  举报