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

SpringBoot接口开发总结

遇到的陌生函数

  1. xxxMapper.selectList(): 使用mybatis获取数据库某几行数据。
    • new QueryWrapper<>().lambda(): 创建sql查询对象
    • isNull(实体类::getXXX): 判断某个字段是否为空
    • or() / and(): 链式连接多个查询条件
  2. ifPresent()Optional<实体类>的配合使用
    • ifPresent 是 Java 8 引入的一个方法,它是 java.util.Optional 类的一个实例方法
      • 消费操作:如果 Optional 对象包含非空值,ifPresent 方法会将这个值传递给一个 Consumer 接口的实现,即一个接受一个参数的函数式接口,并执行这个接口的 accept 方法。
      • 避免空指针异常:通过使用 ifPresent,你可以在不直接调用 get() 方法的情况下,对 Optional 对象中的值进行操作,从而避免可能的空指针异常。
      • 链式调用:ifPresent 方法返回 Optional 对象本身,这使得你可以在调用 ifPresent 后继续链式调用其他 Optional 方法。
    • Optional 类是 Java 8 为了帮助开发者更优雅地处理可能为 null 的情况而引入的。
  3. peek(): 跟 foreach()有点像,但peek是中间操作,foreach是终端操作。
  4. findFirst(): findFirst() 是一个终端操作,它用于返回流中的第一个元素。如果流为空(即没有任何元素),则 findFirst() 返回一个空的 Optional 对象。

分批处理

  • 思路一: 如果数据库读取数据时无法一次性读入所有数据到后端服务器中,或者业务需求只需要一次接口访问处理一部分数据时。
    • Mapper层读取数据时使用 .last(“limit 10”) 来限制读取的条数
  • 思路二: 如果一次性读入了所有数据,但是数据在处理过程中还需调用外部接口,但是外部接口无法一次性承受所有数据的批量访问。
    • Lists.partition(实体对象列表, 批次大小)
    • parallelStream()
    • 分批处理时,如何将流中元素和外部接口批量返回的数据进行对应。建议可以使用访问接口时和接口返回时数据中的不变量作为map的key,建立起两者之间的联系。

命名规范和常见的取名示例

  1. 包名:
    • 应该全部使用小写字母
    • 通过以公司或组织域名的逆序开始
    • 避免使用缩写,除非它是广泛认可的
  2. 类名
    • 使用驼峰命名法,首字母大写
    • 类名应该是名词,如User, Order, PaymentService
  3. 接口名
    • 通常以大写字母I 开头,后面跟驼峰命名法
    • 接口名应该是形容词或过去分词,如 IUserRepository, IOrderService
  4. 方法名
    • 使用驼峰命名法,首字母小写
    • 方法名应该是动词或动词短语,描述方法的行为
  5. 变量名
    • 使用驼峰命名法,首字母小写
    • 变量名应该是描述性的,表名变量的用途
    • 常见命名:
      • 数据库一中的一条数据:entity
      • 数据库映射对象: do
      • 视图映射对象:vo
      • 输入对象/输出对象: inputObj / ouputObj

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java设计模式—面向对象设计原则(四) ----->接口隔离原则(ISP) (完整详解,附有代码+案例)
  • 网络安全宣传周 | DNS安全威胁与应对措施分享
  • Google提出 Speculative RAG:通过草稿机制增强检索增强生成
  • HTB-Vaccine(suid提权、sqlmap、john2zip)
  • ImDisk Toolkit将一部分RAM模拟成硬盘分区
  • 构建响应式 Web 应用:Vue.js 基础指南
  • Linux内核编程(十六)CAN总线驱动
  • Anolis OS 8.8 CentOS8离线安装mysql-8.0.9
  • Docker简介在Centos和Ubuntu环境下安装Docker
  • 医疗监测数据检测系统源码分享
  • Chrome和Chromium浏览器有什么不同?
  • 鸿蒙之Hello Word 遇坑总结 mac系统 不能预览 提示 Only files in a module can be previewed 解决办法
  • 第十一周:机器学习笔记
  • arcgisPro地理配准
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】007 - 一号内核线程 kernel_init线程 工作流程分析
  • [NodeJS] 关于Buffer
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • CSS居中完全指南——构建CSS居中决策树
  • HTTP那些事
  • Invalidate和postInvalidate的区别
  • Java 网络编程(2):UDP 的使用
  • java中的hashCode
  • React16时代,该用什么姿势写 React ?
  • socket.io+express实现聊天室的思考(三)
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue-loader 源码解析系列之 selector
  • webgl (原生)基础入门指南【一】
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 国内开源镜像站点
  • 移动端高清、多屏适配方案
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #FPGA(基础知识)
  • #include
  • $L^p$ 调和函数恒为零
  • (BFS)hdoj2377-Bus Pass
  • (Oracle)SQL优化技巧(一):分页查询
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Python第六天)文件处理
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (九十四)函数和二维数组
  • (四)事件系统
  • (一)VirtualBox安装增强功能
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)visual stdio 书签功能介绍
  • (转)可以带来幸福的一本书
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET 服务 ServiceController
  • .NET 使用 XPath 来读写 XML 文件
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .NET开发者必备的11款免费工具
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • :“Failed to access IIS metabase”解决方法
  • @Pointcut 使用
  • @private @protected @public