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

数据库访问工具 dbVisitor v6.0.0 发布

dbVisitor 是一款轻量小巧、功能完备的 Java 数据库 ORM 工具,它的前身是 HasorDB,历经 8 年迭代后正式更名为 dbVisitor 并开始独立发展4。以下是关于 dbVisitor v6.0.0 发布的相关信息:

发布说明

在 Maven Central 上可查询到 dbVisitor 相关模块的最新版本为 6.0.1,其中包含 dbVisitor - spring - starter、dbVisitor - solon - plugin 等多个模块,均基于 Apache Software License 2.0 开源,且经 OSS Index 检测无漏洞。

功能特性

  • 全面的功能支持:提供对象映射、丰富的类型处理、动态 SQL、存储过程、内置分页方言 20 多种、支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句 / 多结果等功能。支持 5 个事务隔离级别、7 个事务传播行为(与 Spring tx 相同),支持分页查询以及多种数据库方言,还支持 JDBC 4.2 和 Java 8 中的时间类型。
  • 框架兼容性好:不依赖任何其他框架,可方便地与任意框架整合使用,兼容 Spring JdbcTemplate 和 MyBatis 映射文件,支持单表 ActiveRecord 方式,能让开发者以熟悉的方式进行数据库操作。
  • 独特的扩展机制:提供独特的 <代码开始>@{xxx, expr, xxxxx }< 代码结束 > 规则扩展机制,让动态 SQL 更加简单。

dbVisitor v6.0.0 的发布,为 Java 开发者提供了一个更高效、更灵活的数据库访问工具,有助于提升数据库操作的效率和代码的可维护性。

dbVisitor 作为一款数据库 ORM 工具,INSERT 策略通常是为了更灵活地处理数据插入场景而设计的。不过,关于 dbVisitor 具体有几种 INSERT 策略,官方文档或公开资料可能未广泛提及。下面为你推测一些常见的 INSERT 策略类型:

1. 全量插入策略

在这种策略下,会将实体对象中的所有属性值插入到数据库表对应的列中。即使某些属性值为 null,也会插入 null 到数据库。比如你有一个 User 实体,包含 idnameage 等属性,使用全量插入策略时,会将这些属性对应的值全部插入到数据库表的 user 表中。示例代码可能如下(假设为伪代码):

java

User user = new User();
user.setId(1);
user.setName("John");
user.setAge(25);
// 全量插入
dbVisitor.insert(user);

2. 非空插入策略

该策略只插入实体对象中值不为 null 的属性。这样可以避免向数据库插入不必要的 null 值。还是以 User 实体为例,如果 age 属性为 null,那么插入时只会将 id 和 name 对应的值插入到数据库表中。示例如下:

java

User user = new User();
user.setId(1);
user.setName("John");
// 非空插入
dbVisitor.insertNotNull(user);

3. 忽略已有主键插入策略

当插入数据时,如果数据库表中已经存在相同主键的数据,这种策略会忽略此次插入操作,避免主键冲突错误。例如:

java

User user = new User();
user.setId(1);
user.setName("John");
// 忽略已有主键插入
dbVisitor.insertIgnoreDuplicate(user);

4. 存在则更新,不存在则插入策略(Upsert)

若数据库表中已存在相同主键的数据,就更新该条数据;若不存在,则执行插入操作。示例代码如下:

java

User user = new User();
user.setId(1);
user.setName("John");
// 存在则更新,不存在则插入
dbVisitor.upsert(user);

要确切知晓 dbVisitor v6.0.0 的 INSERT 策略种类,你可以查阅 dbVisitor 的官方文档、API 参考或者源代码。

相关文章:

  • 从零实现本地大模型RAG部署
  • PostgreSQL 16深度解析(从16.0-16.8)
  • 正则表达式 - 简介
  • 【算法】堆排序
  • jeecg拦截器 排除地址不让他拦截
  • 使用傅里叶级数和Python表示方波
  • 深度解析新能源汽车研发测试中的关键信号采集技术
  • Qt实现鼠标拖动窗口
  • Java 基础-32-枚举-枚举的应用场景
  • Flink介绍——实时计算核心论文之Storm论文详解
  • 以太网安全
  • 达芬奇20正式版 Davinci Resolve Studio 20 支持WIN
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(十一)
  • Systemd构建容器化微服务集群管理系统
  • Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(Xinference方式)
  • C++之红黑树
  • JAVA EE_多线程-初阶(二)
  • 车载诊断架构 --- 整车重启先后顺序带来的思考
  • 深入理解C++中的itoa()函数 --任意进制之间转换函数
  • 【并发编程 | 第七篇】深入学习线程池(一)
  • wordpress播放直播/seo整站优化外包公司
  • 专题网站开发 交互方法/免费seo教程分享
  • 固原市建设局网站/免费的推广引流软件下载
  • 宠物交易网站开发/线下课程seo
  • 做网站需要注意的/广告关键词排名
  • 黑彩网站怎么做/市场调研报告范文2000