Spring Boot 中的 Native SQL 是什么, 如何使用

news/2024/11/15 5:27:49/

Spring Boot 中的 Native SQL 是什么, 如何使用

在 Spring Boot 中,我们通常使用 ORM 框架(例如 Hibernate 或 MyBatis)来操作数据库。但是,有时候我们需要执行一些自定义的 SQL 查询或更新语句,这时候就需要使用 Spring Boot 中的 Native SQL。

在本文中,我们将介绍 Spring Boot 中的 Native SQL 是什么,以及如何使用它来执行自定义的 SQL 查询或更新语句。

什么是 Native SQL

Native SQL 是指直接使用 SQL 语句来操作数据库,而不是使用 ORM 框架提供的 API。使用 Native SQL 可以提高查询效率,并且可以执行一些复杂的 SQL 查询或更新语句。

在 Spring Boot 中,我们可以使用 JdbcTemplate 或 NamedParameterJdbcTemplate 类来执行 Native SQL。

使用 JdbcTemplate 执行 Native SQL

JdbcTemplate 是 Spring Boot 提供的一个用于执行 SQL 语句的工具类。它可以执行任何 SQL 语句,并且支持自定义的 RowMapper 来将查询结果映射到 Java 对象。

步骤一:添加依赖

首先,你需要在你的项目中添加 Spring Boot 的 JdbcTemplate 依赖。在 Maven 中,你可以添加以下依赖:

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

步骤二:创建 JdbcTemplate 实例

在你的代码中,你可以使用 Spring Boot 的自动配置功能来创建 JdbcTemplate 实例。例如:

@Autowired
JdbcTemplate jdbcTemplate;

在上面的代码中,我们使用 @Autowired 注解来注入 JdbcTemplate 实例。

步骤三:执行 SQL 语句

使用 JdbcTemplate 执行 SQL 语句非常简单。你可以使用 JdbcTemplate 的 query() 方法来执行查询语句,使用 update() 方法来执行更新语句。例如:

// 查询语句
List<MyObject> results = jdbcTemplate.query("SELECT * FROM my_table WHERE id = ?",new Object[] { 123 },new RowMapper<MyObject>() {public MyObject mapRow(ResultSet rs, int rowNum) throws SQLException {MyObject obj = new MyObject();obj.setId(rs.getInt("id"));obj.setName(rs.getString("name"));return obj;}});// 更新语句
int rowsUpdated = jdbcTemplate.update("UPDATE my_table SET name = ? WHERE id = ?","New Name", 123);

在上面的代码中,我们使用 JdbcTemplate 执行了一个查询语句和一个更新语句。在查询语句中,我们使用了一个自定义的 RowMapper 将查询结果映射到了一个自定义的 Java 对象中。

使用 NamedParameterJdbcTemplate 执行 Native SQL

NamedParameterJdbcTemplate 是 JdbcTemplate 的一个扩展,它支持使用命名参数来代替占位符。使用命名参数可以使 SQL 语句更加清晰易读,并且可以避免参数位置不匹配的问题。

步骤一:添加依赖

首先,你需要在你的项目中添加 Spring Boot 的 NamedParameterJdbcTemplate 依赖。在 Maven 中,你可以添加以下依赖:

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

步骤二:创建 NamedParameterJdbcTemplate 实例

在你的代码中,你可以使用 Spring Boot 的自动配置功能来创建 NamedParameterJdbcTemplate 实例。例如:

@Autowired
NamedParameterJdbcTemplate jdbcTemplate;

在上面的代码中,我们使用 @Autowired 注解来注入 NamedParameterJdbcTemplate 实例。

步骤三:执行 SQL 语句

使用 NamedParameterJdbcTemplate 执行 SQL 语句也非常简单。你可以使用 NamedParameterJdbcTemplate 的 query() 方法来执行查询语句,使用 update() 方法来执行更新语句。例如:

// 查询语句
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", 123);
List<MyObject> results = jdbcTemplate.query("SELECT * FROM my_table WHERE id = :id",params,new RowMapper<MyObject>() {public MyObject mapRow(ResultSet rs, int rowNum) throws SQLException {MyObject obj = new MyObject();obj.setId(rs.getInt("id"));obj.setName(rs.getString("name"));return obj;}});// 更新语句
Map<String, Object> params = new HashMap<String, Object>();
params.put("name", "New Name");
params.put("id", 123);
int rowsUpdated = jdbcTemplate.update("UPDATE my_table SET name = :name WHERE id = :id",params);

在上面的代码中,我们使用 NamedParameterJdbcTemplate 执行了一个查询语句和一个更新语句。在查询语句中,我们使用了命名参数来代替占位符,使 SQL 语句更加清晰易读。在更新语句中,我们同样使用了命名参数来代替占位符。

总结

在本文中,我们介绍了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 来执行自定义的 SQL 查询或更新语句。使用 Native SQL 可以提高查询效率,并且可以执行一些复杂的 SQL 查询或更新语句。同时,使用命名参数可以使 SQL 语句更加清晰易读,并且可以避免参数位置不匹配的问题。


http://www.ppmy.cn/news/792022.html

相关文章

【Rust 基础篇】Rust 特征(Traits)

文章目录 导言一、特征的定义和基本语法二、特征的默认实现三、泛型特征四、特征的实现和使用总结 导言 Rust 的特征&#xff08;Traits&#xff09;是一种强大的语言机制&#xff0c;它允许我们定义共享行为并实现代码的抽象。通过特征&#xff0c;我们可以编写更加灵活和可复…

人体时钟屏保-widows电脑屏幕保护

我们用人体曲线造型绘制出0-9的阿拉伯数字构成不一样的时钟显示效果&#xff0c;呈现出不一样的阿拉伯数字时钟屏幕保护小软件-人体时钟屏保。 软件名称&#xff1a;冷高轮屏保 软件版本&#xff1a;v1.0 软件语言&#xff1a;中文 支持系统&#xff1a;windows xp/vista/7/8/…

现代化个人博客系统 ModStartBlog v7.7.0 博客关键词优化,附件上传重构

现代化个人博客系统 ModStartBlog v7.7.0 博客关键词优化&#xff0c;附件上传重构 ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基…

Openlayers实战:回显多点、多线段、多多边形

Openlayers地图中,回显数据是非常重要的。 继上一示例回显点、线、圆形、多边形后。本示例回显多线,多点,多个多边形。用到了MultiPoint,MultiLineString,MultiPolygon。 多个信息的显示可以采用循环的方式,单个显示点、线、面。 但是循环方式是要多次计算的,而MultiPoint…

【Excel经验】日期时间处理方法

概览-公式汇总 公式功能公式公式说明提取时间中的日期TEXT(A2,“yyyy-mm-dd”)A2列数据格式样例&#xff1a;2023/7/5 6:20:10计算耗时得到单位&#xff1a;秒数VALUE(TEXT(B2-A2,“[ss]”))A2、B2列数据格式样例&#xff1a;2023/7/5 6:20:10计算耗时得到格式化显示年月日B2-…

大公司一般在什么招聘软件上招聘?

看是什么样的大公司以及你目前的情况了。 1、头部互联网大厂几乎对基层可替代性高的招聘&#xff0c;基本在校招时候已经搞定大多数岗位了。对核心岗位的招聘大部分是内推和猎头。部分社招的话&#xff0c;近两年好用一点的软件是BOSS。 2、中小体量的公司也是BOSS最多。别问为…

人才招聘网站

马上要找实习了&#xff0c;这段时间一直在复习巩固以前学习的东西&#xff0c;前段时间抽空那一个“人才招聘网站”复习了一下struts2的基础知识&#xff0c;这里我把实现逻辑贴出来&#xff0c;一方面希望能帮到需要的人&#xff0c;另一方面方便自己在以后做类似网站的时候可…

初创公司人才招聘与管理

创业文化非常重要&#xff0c;特别是那种有弹性文化的初创公司。“最好的团队其实可以和任何人合作&#xff0c;而且可以随时随地投入到工作之中”. 1.人文管理模式 人文管理实质就是以人为主体的管理&#xff0c;它区别与军事化管理的强制性&#xff0c;更着重于激励人的自觉…