# dbvisitor
**Repository Path**: hlx_coltd/dbvisitor
## Basic Information
- **Project Name**: dbvisitor
- **Description**: dbVisitor 是一个数据库 ORM工具,提供对象映射、丰富的类型处理、动态SQL、存储过程、内置分页方言20+、支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句/多结果。兼容 Spring 及 MyBatis 用法。它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://www.dbvisitor.net/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 74
- **Created**: 2023-03-24
- **Last Updated**: 2023-03-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
介绍
------------------------------------
* Project Home: [https://www.dbvisitor.net](https://www.dbvisitor.net)
* [](https://qm.qq.com/cgi-bin/qm/qr?k=Qy3574A4VgI0ph4fqFbZW-w49gnyqu6p&jump_from=webapi)
[](mailto:zyc@byshell.org)
[](https://www.apache.org/licenses/LICENSE-2.0.html)
[](https://maven-badges.herokuapp.com/maven-central/net.hasor/dbvisitor)
dbVisitor 是一个数据库 ORM 工具。提供对象映射、丰富的类型处理、动态SQL、存储过程、内置分页方言20+、
支持嵌套事务、多数据源、条件构造器、INSERT 策略、多语句/多结果。兼容 Spring 及 MyBatis 用法。
它不依赖任何其它框架,因此可以很方便的和任意一个框架整合在一起使用。
功能特性
-----------------------------
- 熟悉的方式
- JdbcTemplate 接口方式(高度兼容 Spring JDBC)
- Mapper 文件方式(高度兼容 MyBatis)
- LambdaTemplate (高度接近 MyBatis Plus、jOOQ 和 BeetlSQL)
- @Insert、@Update、@Delete、@Query、@Callable 注解(类似 JPA)
- 事务支持
- 支持 5 个事务隔离级别、7 个事务传播行为(与 Spring tx 相同)
- 提供 TransactionTemplate、TransactionManager 接口方式声明式事务控制能力(用法与 Spring 相同)
- 特色优势
- 支持 分页查询 并且提供多种数据库方言(20+)
- 支持 INSERT 策略(INTO、UPDATE、IGNORE)
- 更加丰富的 TypeHandler(MyBatis 40+,dbVisitor 60+)
- Mapper XML 支持多语句、多结果
- 提供独特的 `@{xxx, expr , xxxxx }` 规则扩展机制,让动态 SQL 更加简单
- 支持 存储过程
- 支持 JDBC 4.2 和 Java8 中时间类型
- 支持多数据源
快速上手
------------------------------------
引入依赖
```xml
net.hasor
dbvisitor
5.2.0
```
引入数据库驱动,例如 MySQL 驱动
```xml
mysql
mysql-connector-java
8.0.22
```
使用 dbVisitor 可以不依赖数据库连接池,但有数据库连接池是大多数项目的标配。这里选用 Alibaba 的 Druid
```xml
com.alibaba
druid
1.1.23
```
最后准备一个数据库表,并初始化一些数据(`CreateDB.sql` 文件)
```sql
drop table if exists `test_user`;
create table `test_user` (
`id` int(11) auto_increment,
`name` varchar(255),
`age` int,
`create_time` datetime,
primary key (`id`)
);
insert into `test_user` values (1, 'mali', 26, now());
insert into `test_user` values (2, 'dative', 32, now());
insert into `test_user` values (3, 'jon wes', 41, now());
insert into `test_user` values (4, 'mary', 66, now());
insert into `test_user` values (5, 'matt', 25, now());
```
### SQL 方式
```java
// 创建数据源
DataSource dataSource = DsUtils.dsMySql();
// 创建 JdbcTemplate 对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 加载测试数据脚本
jdbcTemplate.loadSQL("CreateDB.sql");
// 查询数据并 Map 形式返回
List