Spring Boot 集成 Spring JDBC

Spring JDBC模块负责访问操作数据库,在中小型项目中使用Spring框架自己的JdbcTemplate方便快捷,而且稍加封装完全不输MyBatis框架。

Spring 生态中的 Spring Data JDBC 和 Spring Data JPA 就是对原生JDBC的加强,它提供查询数据库并映射成实体的功能,和MyBatis有很多相似之处。关于 Spring Data 相关的知识会另起新篇。

  • 引入Maven依赖

集成Spring JDBC只需在pom.xml中引入:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>${version}</version>
</dependency>

jdbc连接池和数据库驱动:

<!-- hikari jdbc连接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>${version}</version>
</dependency>
<!-- mysql连接驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${version}</version>
</dependency>
  • 配置数据源

编辑 application.yml 文件

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver # 数据库连接驱动
    username: ${MYSQL_USERNAME:engrz} # 数据库连接用户名
    password: ${MYSQL_PASSWORD:passwd2021} # 数据库连接密码
    url: jdbc:mysql://${MYSQL_HOST:mysqlhost}:${MYSQL_PORT:3306}/database?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allow # 数据库连接url

Spring Boot支持hikari,dbcp2,druid,设置连接池其他参数可参考 Spring Boot Data Properties 相关属性。

  • 使用JdbcTemplate

配置好数据源即可直接在项目中使用JdbcTemplate,Spring会自动注入。

@Autowired
private JdbcTemplate jdbcTemplate;
  • JdbcTemplate常用方法

int update(String sql)
执行新增或更新,返回影响记录数

int[] batchUpdate(String… sql)
批量执行新增或更新,返回影响记录数

void execute(String sql)
执行一条sql

List query(String sql, RowMapper rowMapper)
查询并返回结果集合。RowMapper是指映射的实体类,根据列名找到属性名并赋值

List> queryForList(String sql)
查询并返回结果集合,将每一条数据放在一个Map中

Map queryForMap(String sql)
将查询结果放在Map中,只适用于返回一条数据的情况

T queryForObject(String sql, Class requiredType)
将查询结果放在对象中,只适用于返回一条数据的情况

SqlRowSet queryForRowSet(String sql)
查询返回RowSet对象,一般用于封装通用方法,自定义动态返回映射对象。

以上都有重载方法,适用于不同场景查询,使用简单就不详述。更多方法和说明可以查询文档: JdbcTemplate


已发布

分类

来自

评论

《 “Spring Boot 集成 Spring JDBC” 》 有 3 条评论

  1. 阿飞

    老师,您以前的文章“端口批量转发工具v1.1”,那个工具能否实现UDP端口的批量转发呢?之前给您留言您可能没看到,冒昧在最新的文章里留言了,期待您的回复,非常感谢~

    1. 那个写了好几年了,当时是一个demo来着,只支持TCP转发。

      1. 阿飞

        好的,谢谢了

回复 阿飞 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注