Spring Boot中使用JdbcTemplate
一、前言在Spring Boot开启JdbcTemplate很简单只需要引入spring-boot-starter-jdbc依赖即可。JdbcTemplate封装了许多SQL操作具体可查阅官方文档https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html。二、引入依赖spring-boot-starter-jdbcdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency数据库驱动为mysql数据源采用Druid。具体可参考《Spring Boot整合MyBatis》。三、代码编写3.1 数据准备drop table if exists student; create table student ( sno int(11) not null auto_increment comment 学号, sname varchar(50) character set utf8 collate utf8_general_ci not null comment 姓名, ssex varchar(2) character set utf8 collate utf8_general_ci not null comment 性别, primary key (sno) using btree ) engine innodb auto_increment 1 character set utf8 collate utf8_general_ci row_format dynamic; insert into student values (1, KangKang, M); insert into student values (2, Mike, M); insert into student values (3, Jane, F);这里主要演示在Dao的实现类里使用JdbcTemplate所以其它模块代码的编写就不展示了具体可参考文末的源码。3.2 Dao层StudentDao接口代码ComponentpublicinterfaceStudentDao{intadd(Studentstudent);intupdate(Studentstudent);intdeleteBysno(intsno);ListMapString,ObjectqueryStudentsListMap();StudentqueryStudentBySno(intsno);}StudentDaoImpl类代码Repository(studentDao)publicclassStudentDaoImplimplementsStudentDao{AutowiredprivateJdbcTemplatejdbcTemplate;Overridepublicintadd(Studentstudent){// String sql insert into student(sno,sname,ssex) values(?,?,?);// Object[] args { student.getSno(), student.getName(), student.getSex() };// int[] argTypes { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR };// return this.jdbcTemplate.update(sql, args, argTypes);Stringsqlinsert into student(sno,sname,ssex) values(:sno,:name,:sex);NamedParameterJdbcTemplatenpjtnewNamedParameterJdbcTemplate(this.jdbcTemplate.getDataSource());returnnpjt.update(sql,newBeanPropertySqlParameterSource(student));}Overridepublicintupdate(Studentstudent){Stringsqlupdate student set sname ?,ssex ? where sno ?;Object[]args{student.getName(),student.getSex(),student.getSno()};int[]argTypes{Types.VARCHAR,Types.VARCHAR,Types.VARCHAR};returnthis.jdbcTemplate.update(sql,args,argTypes);}OverridepublicintdeleteBysno(intsno){Stringsqldelete from student where sno ?;Object[]args{sno};int[]argTypes{Types.VARCHAR};returnthis.jdbcTemplate.update(sql,args,argTypes);}OverridepublicListMapString,ObjectqueryStudentsListMap(){Stringsqlselect * from student;returnthis.jdbcTemplate.queryForList(sql);}OverridepublicStudentqueryStudentBySno(intsno){Stringsqlselect * from student where sno ?;Object[]args{sno};int[]argTypes{Types.VARCHAR};ListStudentstudentListthis.jdbcTemplate.query(sql,args,argTypes,newStudentMapper());if(studentList!nullstudentList.size()0){returnstudentList.get(0);}else{returnnull;}}}在引入spring-boot-starter-jdbc驱动后可直接在类中注入JdbcTemplate。由上面代码可发现对于保存操作有两种不同的方法当插入的表字段较多的情况下推荐使用NamedParameterJdbcTemplate。3.3 Mapper对于返回结果可以直接使用ListMapString, Object来接收这也是个人比较推荐使用的方式毕竟比较简单方便也可以使用库表对应的实体对象来接收不过这时候我们就需要手动创建一个实现了org.springframework.jdbc.core.RowMapper的对象用于将实体对象属性和库表字段一一对应publicclassStudentMapperimplementsRowMapperStudent{OverridepublicStudentmapRow(ResultSetrs,introwNum)throwsSQLException{StudentstudentnewStudent();student.setSno(rs.getInt(sno));student.setName(rs.getString(sname));student.setSex(rs.getString(ssex));returnstudent;}}3.4 控制层TestControllerRestControllerpublicclassTestController{AutowiredprivateStudentServicestudentService;RequestMapping(value/querystudent,methodRequestMethod.GET)publicStudentqueryStudentBySno(intsno){returnthis.studentService.queryStudentBySno(sno);}RequestMapping(value/addstudent,methodRequestMethod.GET)publicintaddstudent(Studentstudent){returnthis.studentService.add(student);}RequestMapping(value/queryallstudent,methodRequestMethod.GET)publicListMapString,Objectqueryallstudent(){returnthis.studentService.queryStudentsListMap();}RequestMapping(value/deletestudent,methodRequestMethod.GET)publicintdeletestudent(intsno){returnthis.studentService.deleteBysno(sno);}}四、测试最终项目目录如下图所示启动项目测试插入数据 http://localhost:8080/addstudent?sno4nameMariasexF查询所有学生数据http://localhost:8080/queryallstudent测试删除http://localhost:8080/deletestudent?sno4

相关新闻

JMETER连接DM8

JMETER连接DM8

JMETER连接DM8(最后附视频) 1 切换显示语言 2 添加jar包 3 创建线程组 4 创建JDBC Connection Configuration 4.1定义连接池名称 4.2 配置jdbc连接串 4.2.1 Database URL: jdbc:dm://127.0.0.1:5236 4.2.2 JDBC Driver class: dm.jdbc.driver.DmDriver 4.2.3 数据库用户名&a…

2026/8/18 19:15:29 阅读更多 →
php的pthreads扩展实现执行多线程任务

php的pthreads扩展实现执行多线程任务

一、PHP安装pthreads的多线程扩展下载pthreads源码:http://pecl.php.net/package/pthreads首先确定安装的php版本是线程安全的,如果不是的话重新编译加上 --enable-maintainer-zts \1.解压tar -zxvf pthreads-0.0.44.tgz ;2.进入源码文件夹 cd pthreads-…

2026/8/18 19:15:29 阅读更多 →
界面组件DevExpress ASP.NET Web Forms v22.2版本系统环境配置要求

界面组件DevExpress ASP.NET Web Forms v22.2版本系统环境配置要求

DevExpress ASP.NET Web Forms Controls拥有针对Web表单(包括报表)的110种UI控件,DevExpress ASP.NET MVC Extensions是服务器端MVC扩展或客户端控件,由轻量级JavaScript小部件提供支持的70个高性能DevExpress ASP.NET Core Contr…

2026/8/18 19:14:29 阅读更多 →

最新新闻

微信投票如何实现名次更新?掌握排名功能让评选活动更专业

微信投票如何实现名次更新?掌握排名功能让评选活动更专业

在校园评优、社区风采展示、门店人气评选、文艺作品征集等场景中,很多人都会选择依托微信开展线上投票活动。微信自带的投票功能虽然操作便捷,仅能满足简单的票数统计需求,最大的短板便是缺少可视化排名展示能力。整场投票过程名次不透明、数…

2026/8/18 19:56:47 阅读更多 →
私有化部署vs公有云SaaS:2026五大类智能陪练厂商技术架构与安全合规横评

私有化部署vs公有云SaaS:2026五大类智能陪练厂商技术架构与安全合规横评

本文目录:一、为什么企业级AI智能陪练系统对技术架构与数据安全要求极高?二、市场上的智能陪练厂商在部署模式与架构设计上有何不同?三、五大类智能陪练厂商在安全合规与系统集成能力上有何差异?四、中关村科金如何构建金融级私有…

2026/8/18 19:56:47 阅读更多 →
Qwen 3.8 27B开源大模型本地部署与实战指南

Qwen 3.8 27B开源大模型本地部署与实战指南

这次我们来看一个在开源社区引起热议的大语言模型:Qwen 3.8 27B。标题很直接,“免费击败 Claude Opus 4.6”,这背后反映的是当前开源模型在性能上对闭源商业模型的追赶态势。对于开发者、研究者和希望将大模型能力本地化的团队来说&#xff0…

2026/8/18 19:56:47 阅读更多 →
在终端运行x86 DOS,为mipsel编译tiny386

在终端运行x86 DOS,为mipsel编译tiny386

现在为ARM架构构建的x86虚拟机较多,但为一些嵌入式轻量平台如mipsel构建的较少,为节约mipsel的运行资源,本次编译基于Tiny386进行修改,加入了终端显示80*25的VGA文本和从终端读取输入,以实现在终端运行DOS,…

2026/8/18 19:56:47 阅读更多 →
可解释智能体系统:基于摘要记忆的对话反诈技术解析

可解释智能体系统:基于摘要记忆的对话反诈技术解析

1. 项目缘起:为什么我们需要一个“会解释”的对话反诈系统? 最近几年,无论是工作还是生活,我们与AI对话的频次越来越高。从客服机器人到智能助手,再到各种社交应用里的“虚拟伴侣”,对话式AI已经无处不在。…

2026/8/18 19:56:47 阅读更多 →
HTTP QUERY方法详解:复杂查询的标准化解决方案与Spring Boot实践

HTTP QUERY方法详解:复杂查询的标准化解决方案与Spring Boot实践

在 HTTP 协议的发展历程中,GET、POST、PUT、DELETE 等方法是开发者最熟悉的工具。然而,随着应用场景的复杂化,特别是对复杂查询和搜索需求的增长,传统的 GET 方法在语义和功能上开始显得力不从心。GET 方法虽然用于获取资源&#…

2026/8/18 19:55:47 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →