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
实体,包含 id
、name
、age
等属性,使用全量插入策略时,会将这些属性对应的值全部插入到数据库表的 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 参考或者源代码。