当前位置: 首页 > news >正文

Spring 6.1新核心:JdbcClient,统一JdbcTemplate两套API的终极方案

01 引言

企业中直接使用JDBC的进行CRUD操作的可能比较少,但是很多框架底层或者测试的时候可能用的比较多,因为Spring官方自带,注入可以直接使用,无需三方依赖。

因为直接使用的比较少,所以关注的人可能不是很多。在浏览Spring Framework时,发现了新的JDBC客户端,函数式操作CRUD相当丝滑,整理一下分享给大家。

02 JDBC客户端

在介绍JdbcClient客户端之前,我们先来了解一下老牌的客户端:

  • JdbcTemplate
  • NamedParameterJdbcTemplate

JdbcTemplateSpring 1.0的时候引入的,参数通过?占位符占位,然后顺序传递。

Stringsql="SELECT * FROM user_info WHERE id = ?";UserInfouserInfo=jdbcTemplate.queryForObject(sql,newBeanPropertyRowMapper<>(UserInfo.class),10002);System.out.println("jdbcTemplate:"+userInfo);// jdbcTemplate:UserInfo(id=10002, name=王二狗, age=54, sex=null, job=null, birthday=null, createdTime=2025-08-15 15:39:28.0, updateTime=null)

NamedParameterJdbcTemplateSpring 2.0引入的,通过:name占位符,然后通过占位符的名称传递参数,不受顺序的限制。

Stringsql="SELECT * FROM user_info WHERE id = :id";MapSqlParameterSourceparams=newMapSqlParameterSource().addValue("id",10002);UserInfouserInfo=namedParameterJdbcTemplate.queryForObject(sql,params,newBeanPropertyRowMapper<>(UserInfo.class));System.out.println("MapSqlParameterSource:"+userInfo);// MapSqlParameterSource:UserInfo(id=10002, name=王二狗, age=54, sex=null, job=null, birthday=null, createdTime=2025-08-15 15:39:28.0, updateTime=null)

这两种客户端虽然可以满足基本的操作,但是不够流畅。随着函数式编程、Lamada表达式被广大开发者接受,这两种客户端的操作方式,可能会被大家一直嫌弃。

03 JdbcClient

JdbcClient是在Spring 6.1引入的,结合两款老牌的端的参数传递的形式,又加入链式编程,以方面开发者的使用。JdbcClient可以完全取代老牌的客户端。

JdbcClient是 Spring 对 JDBC 访问的现代化改进,提供了更简洁、流畅的 API,统一了位置参数和命名参数的使用方式,减少了样板代码,更好地支持现代 Java 特性(Record、Optional等)。

官方地址:https://docs.spring.io/spring-framework/reference/data-access/jdbc/core.html#jdbc-JdbcClient

3.1 查询

Stringsql="SELECT * FROM user_info WHERE id = :id";Stringsql2="SELECT * FROM user_info WHERE id = ?";@Testvoidtest01(){UserInfouserInfo=jdbcClient.sql(sql).param("id",10002).query(UserInfo.class).single();System.out.println("sql:"+userInfo);System.out.println("--------------------");UserInfouserInfo2=jdbcClient.sql(sql2).param(10002).query(UserInfo.class).single();System.out.println("sql2:"+userInfo2);}

执行结果

3.2 更新

Stringsql="SELECT * FROM user_info WHERE id = :id";StringupdateSql="update user_info set name = :name where id = :id";@Testvoidtest02(){jdbcClient.sql(updateSql).param("name","刘十三").param("id",10002).update();UserInfouserInfo=jdbcClient.sql(sql).param("id",10002).query(UserInfo.class).single();System.out.println("sql:"+userInfo);}

执行结果

3.3 新增

@Testvoidtest03(){jdbcClient.sql("INSERT INTO user_info(name, age) VALUES(:name, :age)").param("name","归海一刀").param("age","200").update();UserInfouserInfo=jdbcClient.sql("SELECT * FROM user_info WHERE name = ?").param("归海一刀").query(UserInfo.class).single();System.out.println("sql:"+userInfo);}

执行结果

04 小结

JdbcClient相比之前的客户端确实简洁了不少,如果项目中需要使用jdbc客户端,JdbcClient将是你的不二选择。

http://www.jsqmd.com/news/312013/

相关文章:

  • Qt 和 C++,是不是应该叫 Q++ 了?
  • 好写作AI:当甲方说“要高级感”?看AI如何翻译“五彩斑斓的黑”
  • 好写作AI:别跟自己的构思“谈恋爱”!让AI当反派,和你抬出个新世界
  • 好写作AI:别让灵感在收藏夹吃灰!把碎片信息丢给AI,自动生成你的“第二大脑”
  • 好写作AI:别把会议录音当“学术垃圾”!用AI一键炼出摘要和待办清单
  • 好写作AI:还在多个文档间“精神分裂”?让AI分身成你的专项写作助理
  • 好写作AI:别让邮件毁了你的专业人设!AI三招把“通知”变“邀请函”
  • 详细介绍:阿里云与华为云服务器哪个更利于人工智能?
  • 2026年口碑好的侧推装箱机/高速自动装箱机行业内知名厂家排行榜
  • 贵阳英语雅思培训机构推荐:2026权威测评出国雅思辅导机构口碑榜单
  • 昆明财税公司怎么选?避坑指南+17年本土机构优选参考
  • 国际化(i18n)UI 自动化验证方案
  • 无障碍自动化测试合规性实施指南
  • 安全测试与 UI 交互的交叉验证:构建软件质量的全面防线
  • 混沌工程在UI层的实施方法:提升用户体验稳定性的系统化路径
  • 金丝雀发布中的自动化验证策略
  • 多维度测试覆盖率评估模型:提升软件质量的核心引擎
  • 找商网 item_search_shop - 获得公司的所有商品接口对接全攻略:从入门到精通
  • 强烈安利2026 TOP10 AI论文写作软件:本科生毕业论文必备神器
  • 触觉传感器如何布局最有效?一项关于抓取学习效率的仿真对比研究
  • 【课堂笔记】概率论-1 - 实践
  • 赣州英语雅思培训机构推荐 , 2026权威测评出国雅思辅导机构口碑榜单
  • 贵阳英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单
  • 2026年评价高的无锡干燥机附件过滤器/干燥机附件过滤器公司
  • 聚焦2026年1月,口碑好的泄爆墙生产厂家排行来了,泄爆墙实力厂家技术实力与市场口碑领航者
  • ntpd (传统NTP服务)的参数
  • 2026年口碑好的盘管和半管反应釜换热容器/盘管和夹套接收罐换热容器直销厂家
  • 2026年靠谱的轴承钢球/打孔钢球厂家推荐及选购参考榜
  • 【通知】终于可以刷真题了,CDA历年真题逐步开放,备考添利器
  • 【Django毕设源码分享】基于Django的蛋糕购物商城网站的设计与实现(程序+文档+代码讲解+一条龙定制)