springboot整合jdbctemplate教程

这篇文章介绍一下springboot项目整合jdbctemplate的步骤,以及通过jdbctemplate完成数据库的增删改查功能。

目录

第一步:准备数据库

第二步:创建springboot项目

1、创建一个springboot项目并命名为jdbctemplate

2、添加spring-jdbc和项目要使用的依赖

第三步:创建jdbctemplate配置类

第四步:使用jdbctemplate


第一步:准备数据库

创建数据jdbctemplate,然后执行以下sql脚本

/*Navicat Premium Data TransferSource Server         : MariaDBSource Server Type    : MariaDBSource Server Version : 100605 (10.6.5-MariaDB)Source Host           : 127.0.0.1:3306Source Schema         : jdbctemplateTarget Server Type    : MariaDBTarget Server Version : 100605 (10.6.5-MariaDB)File Encoding         : 65001Date: 26/08/2023 16:23:07
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for song
-- ----------------------------
DROP TABLE IF EXISTS `song`;
CREATE TABLE `song`  (`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '歌曲编号',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '歌曲名',`singer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '歌手',`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '歌曲文件URL',`uploaded` tinyint(4) NOT NULL DEFAULT 0 COMMENT '歌曲文件是否存在',`note` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述信息',`last_update_time` datetime NULL DEFAULT NULL COMMENT '最后一次修改时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of song
-- ----------------------------
INSERT INTO `song` VALUES ('20230802123058', '我超喜欢你', '欧阳朵', NULL, 0, '', '2023-08-02 12:30:58');
INSERT INTO `song` VALUES ('20230802123128', '恋爱的猫', '月小妞', NULL, 0, '', '2023-08-02 12:31:28');
INSERT INTO `song` VALUES ('20230802123256', '骄傲的你', '尹昔眠', NULL, 0, '', '2023-08-02 12:32:56');
INSERT INTO `song` VALUES ('20230802123341', '勉为其难', '王冕', NULL, 0, '', '2023-08-02 12:33:41');
INSERT INTO `song` VALUES ('20230822191716', '倒带', '蔡依林', NULL, 0, '', '2023-08-22 19:17:16');
INSERT INTO `song` VALUES ('20230822192055', '错的人', '萧亚轩', NULL, 0, '', '2023-08-22 19:20:55');
INSERT INTO `song` VALUES ('20230822193447', '阴天', '莫文蔚', NULL, 0, '', '2023-08-22 19:34:47');
INSERT INTO `song` VALUES ('20230822215824', '赤伶', '执素兮', NULL, 0, '', '2023-08-22 21:58:24');
INSERT INTO `song` VALUES ('20230822220348', '山楂树之恋', '大能人', NULL, 0, '', '2023-08-22 22:03:48');SET FOREIGN_KEY_CHECKS = 1;

 

第二步:创建springboot项目

1、创建一个springboot项目并命名为jdbctemplate

2、添加spring-jdbc和项目要使用的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.9</version><relativePath/></parent><groupId>com.example</groupId><artifactId>jdbctemplate</artifactId><version>0.0.1-SNAPSHOT</version><properties><java.version>1.8</java.version><mysql.version>8.0.28</mysql.version><jdbc.version>5.0.2.RELEASE</jdbc.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${jdbc.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

第三步:创建jdbctemplate配置类

在config包下创建配置类,配置数据源和JdbcTemplate的bean。

package com.example.jdbctemplate.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;import javax.sql.DataSource;/*** @author heyunlin* @version 1.0*/
@Configuration
public class JdbcTemplateConfig {@Beanpublic JdbcTemplate jdbcTemplate() {return new JdbcTemplate(dataSource());}@Beanpublic PlatformTransactionManager transactionManager() {DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();transactionManager.setDataSource(dataSource());return transactionManager;}@Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setUsername("root");dataSource.setPassword("root");dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/jdbctemplate?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai");return dataSource;}}

第四步:使用jdbctemplate

根目录下创建service包,然后创建一个SongService接口

package com.example.jdbctemplate.service;import java.util.Map;/*** @author heyunlin* @version 1.0*/
public interface SongService {Map<String, Object> selectByPage();
}

在service包下创建impl子包,创建一个SongService的实现类,然后调用jdbcTemplate的crud方法。

package com.example.jdbctemplate.service.impl;import com.example.jdbctemplate.service.SongService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;import java.util.Map;/*** @author heyunlin* @version 1.0*/
@Service
public class SongServiceImpl implements SongService {private final JdbcTemplate jdbcTemplate;@Autowiredpublic SongServiceImpl(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic Map<String, Object> selectByPage() {Map<String, Object> objectMap = jdbcTemplate.queryForMap("select * from song limit 0, 1");System.out.println(objectMap);return objectMap;}}

jdbctemplate里的方法就不介绍了,有兴趣的可以自己去学习一下,毕竟jdbctemplate使用的不多,mybatis才是yyds。

文章涉及代码已经上传到了git,需要的可以通过以下链接获取,

springboot整合jdbctemplateicon-default.png?t=N6B9https://gitee.com/he-yunlin/jdbctemplate.git好了,文章就分享到这里了,看完不要忘了点赞+收藏哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【React基础全篇】

文章目录 一、关于 React二、脚手架2.1 create-react-app 脚手架的使用2.2 项目目录解析2.3 抽离配置文件2.4 webpack 二次封装2.4.1 集成 css 预处理器2.4.2 配置解析别名 2.5 setupProxy 代理 三、JSX3.1 jsx 语法详解3.2 React.createElement 四、组件定义4.1 类组件4.2 函数…

最新CMS指纹识别技术

指纹识别 1&#xff0e;CMS简介 CMS&#xff08;Content Management System&#xff0c;内容管理系统&#xff09;&#xff0c;又称整站系统或文章系统&#xff0c;用于网站内容管理。用户只需下载对应的CMS软件包&#xff0c;部署、搭建后就可以直接使用CMS。各CMS具有独特的…

【python利用shp文件进行绘图白化】

python白化 白化的作用python实现 白化的作用 参考博文【matlab利用shp文件制作mask白化文件】 python实现 python借助shp文件对绘图进行白化&#xff0c;不需要进行mask文件的制作&#xff0c;可以高效地进行区域绘制 import numpy as np import cartopy.crs as ccrs impo…

SRE 与开发的自动化协同 -- 生产环境出现 bug 自动生成异常追踪

简介 生产环境 bug 的定义&#xff1a;RUM 应用和 APM 应用的 error_stack 信息被捕捉后成为 bug。 以 APM 新增错误巡检为例&#xff0c;当出现新错误时&#xff0c;在观测云控制台的「事件」模块下生成新的事件报告&#xff0c;捕捉为 bug。同时利用 Dataflux Func 创建异常…

剪枝基础与实战(3): 模型剪枝和稀疏化训练流程

Model Pruning 相关论文:Learning Efficient Convolutional Networks through Network Slimming (ICCV 2017) 考虑一个问题,深度学习模型里面的卷积层出来之后的特征有非常多,这里面会不会存在一些没有价值的特征及其相关的连接?又如何去判断一个特征及其连接是否有价值? …

DevOps团队如何提高Kubernetes性能

今天&#xff0c;Kubernetes仍然是开发人员最需要的容器。Kubernets最初由 Google 工程师开发&#xff0c;作为跨本地、公共云、私有云或混合云托管的首选解决方案享誉全球。 来自Statista的报告显示&#xff0c;公共云中的Kubernetes市场份额在过去一年中上升了近30%。并且在…

​Softing dataFEED OPC Suite——助力数字孪生技术发展

一 行业概览 数字孪生技术是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;从而反映相对应的实体装备的全生命周期过程。数字孪生技术已经应用在众多领域&#xff1a…

MySQL事务的隔离级别

前置阅读 快速搭建 Linux 学习平台 一、事务的特性 对于事务&#xff0c;我觉得有一句英文描述的非常贴切&#xff1a;All or not, now or never. 事务 &#xff08;Transaction&#xff09;可以说是关系型数据库最重要的特性了。SQL 事务就是一个或者多个 SQL 语句的集合&a…

我的学习笔记:数据处理

数据清洗 对数据进行处理和加工&#xff0c;以使其适合分析和建模。数据清洗包括去除重复数据、填补缺失值、处理异常值和转换数据格式等操作&#xff0c;以提高数据的可靠性和准确性&#xff0c;避免数据分析时出现偏差&#xff0c;提高决策的准确性。 数据去重&#xff1a;通…

C++友元的三种实现

生活中你的家有客厅(Public)&#xff0c;有你的卧室(Private) 客厅所有来的客人都可以进去&#xff0c;但是你的卧室是私有的&#xff0c;也就是说只有你能进去 但是呢&#xff0c;你也可以允许你的好闺蜜好基友进去。 在程序里&#xff0c;有些私有属性 也想让类外特殊的一…

《基于 Vue 组件库 的 Webpack5 配置》7.路径别名 resolve.alias 和 性能 performance

路径别名 resolve.alias const path require(path);module.exports {resolve: {alias: {"": path.resolve(__dirname, "./src/"),"assets": path.resolve(__dirname, "./src/assets/"),"mixins": path.resolve(__dirname,…

Golang基本语法(上)

1. 变量与常量 Golang 中的标识符与关键字 标识符 Go语言中标识符由字母数字和_(下划线&#xff09;组成&#xff0c;并且只能以字母和_开头。 举几个例子&#xff1a;abc, _, _123, a123。 关键字 关键字和保留字都不建议用作变量名&#xff1a; Go语言中有25个关键字。 此…

前端面试相关

HTML5 新特征 ✅ HTML5 与es6 新特性cookie 与 sessionStorage 和 localStorage 的区别 ✅Cookie 和localStorage、SessionStorage 区别事件冒泡和事件捕获 ✅ 事件捕获和事件冒泡垂直居中 DIV ✅ 元素垂直水平居中的多种办法&#xff08;块级 行内元素&#xff09;两栏布局左边…

html5拖拽文件上传需阻止默认事件

至少阻止下列3个事件的默认行为才能实现文件拖拽上传 var bdocument.getElementById(box) b.ondragenter(e)>{e.preventDefault()console.log(aaa,e.dataTransfer.files); } b.ondragover(e)>{e.preventDefault()console.log(bb,e.dataTransfer.files); }b.ondrop(e)>…

AIGC人工智能涉及三十六职业,看看有没有你的职业(一)

文章目录 一只弹吉他的熊猫 神奇的企鹅 功夫熊猫 视觉光影下的女子 闪光灯效 局部柔光 生物光 LOGO设计 制作儿童绘本故事 换脸艺术 打造专属动漫头像 包装设计之美 建筑设计 如何转高清图 生成3D质感图标 生成微信表情包 探索美食摄影的奇妙之旅 蛋糕创意设…

电商项目part06 微服务网关整合OAuth2.0授权中心

微服务网关整合 OAuth2.0 思路分析 网关整合 OAuth2.0 有两种思路&#xff0c;一种是授权服务器生成令牌, 所有请求统一在网关层验证&#xff0c;判断权 限等操作&#xff1b;另一种是由各资源服务处理&#xff0c;网关只做请求转发。 比较常用的是第一种&#xff0c;把API网关…

Python语言实现React框架

迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 reactpy 介绍 reactpy 是一个用 Python 语言实现的 ReactJS 框架。它可以让我们使用 Python 的方式来编写 React 的组件&#xff0c;构建用户界面。 reactpy 的目标是想要将 React 的优秀特性带入 Python 领域&#xff0c;…

XiaoFeng.Net 网络库使用

网络库介绍 XiaoFeng.Net网络库包含了 SocketServer,SocketClient,WebSocketServer,WebSocketClient四个类库 SocketServer 网络服务端同时支持Socket客户端连接&#xff0c;WebSocket客户端&#xff0c;浏览器WebSocket连接 SocketCleint 网络客户端 WebSocketServer WebSock…

HTML总结1【转】

以下内容转载和参考自&#xff1a;w3school的HTML学习内容&#xff0c;HTML 简介 。 一、概述 HTML不是一种编程语言&#xff0c;它是超文本标记语言 (Hyper Text Markup Language)&#xff0c;使用标记标签来描述网页内容。HTML标签是由尖括号包围的关键词&#xff0c;标签通…

机器学习笔记:KD树

1 引入原因 K近邻算法需要在整个数据集中搜索和测试数据x最近的k个点&#xff0c;如果一一计算&#xff0c;然后再排序&#xff0c;开销过大 引入KD树的作用就是对KNN搜索和排序的耗时进行改进 2 KD树 2.1 主体思路 以空间换时间&#xff0c;利用训练样本集中的样本点&…