JdbcTemplate
JdbcTemplate 是 Spring 框架提供的一个用于简化 JDBC 操作的类。它处理了资源的创建和释放,使得开发者能够更专注于 SQL 语句本身和结果的处理。JdbcTemplate 提供了大量的方法,用于执行各种类型的 SQL 语句,包括查询、更新、批处理、调用存储过程等。
- 导入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); }
- 实体类
package com.atheima.domain; import lombok.Data; @Data public class Book { private Integer id; private String type; private String name; private String description; }
- 查询方法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查询中的别名来解决。
- 确保Java对象具有无参构造函数,因为RowMapper会使用它来创建对象实例。
- 确保Java对象的属性具有公共的getter和setter方法,因为RowMapper会使用它们来访问和设置属性值。
分类:
Springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)