跳到主要内容

01 - 快速开始

1.1 环境要求

基础环境

环境版本要求说明
JDK8+支持 JDK 8、11、17、21
Maven3.6+或 Gradle 6+
Spring Boot2.x / 3.xSpring 环境

支持的数据库

数据库版本测试状态
MySQL5.7+✅ 完全支持
PostgreSQL10+✅ 完全支持
Oracle11g+✅ 完全支持
达梦DM8✅ 完全支持

依赖说明

DLZ-DB 核心依赖:

  • spring-jdbc
  • spring-boot
  • jackson-databind(用于 JSON 处理)

无其他重型依赖,保持轻量。


1.2 安装配置

1.2.1 maven引入

<dependency>
<groupId>top.dlzio</groupId>
<artifactId>dlz-db</artifactId>
<version>${最新版本}</version>
&lt;/dependency>

1.2.2 yaml配置

  • Spring Boot 数据源配置
# application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456

# DLZ-DB 配置(可选)
dlz:
db:
# 逻辑删除字段名
logic-delete-field: is_deleted
# 是否使用数据库的SQL,默认值:false
use-db-sql: false
helper:
# 自动更新表结构(程序中定义了bean之后可自动根据bean定义创建或修改表结构),默认值:false
auto-update: false
# 自动更新表结构扫描的包名
package-name: com.dlz.test.db.entity
log:
# 是否显示结果(显示查询结果,开启后可能大量增加日志,有一定性能影响),默认值:false
show-result: true
# 是否显示 SQL(jdbcsql转换成可直接运行的sql,开启后有一定性能消耗),默认值:false
show-run-sql: true
# 是否显示调用者,默认值:false
show-caller: true

1.2.3 java加载配置

jdbc功能不自动加载,DlzDbConfig用spring初始化即可

import com.dlz.db.config.DlzDbConfig;
import com.dlz.db.config.DlzDbProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties({DlzDbProperties.class})
public class DlzDbConfigs extends DlzDbConfig {
}

1.3 第一个示例

5分钟快速体验

1.3.1. 创建数据表

CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`is_deleted` tinyint DEFAULT 0,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);

INSERT INTO user (name, age, email) VALUES
('张三', 25, 'zhangsan@example.com'),
('李四', 30, 'lisi@example.com'),
('王五', 28, 'wangwu@example.com');

1.3.2. 创建实体类(可选)

@Data
@TableName("user") // 可选,默认使用类名转下划线。高级应用:支持自动建表,自动同步结构到数据库
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private Integer isDeleted;
private Date createTime;
}

1.3.3. 开始使用

@RestController
@RequestMapping("/user")
public class UserController {
// ========== 查询 ==========
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return DB.Pojo.select(User.class).eq(User::getId, id).queryOne();
}

@GetMapping("/list")
public List&lt;User> list(@RequestParam(required = false) String name) {
return DB.Pojo.select(User.class).like(name != null, User::getName, name)
.orderByDesc(User::getCreateTime)
.queryList();
}

@GetMapping("/page")
public Page&lt;User> page(@RequestParam(required = false) String name, @RequestParam int pageNum, @RequestParam int pageSize) {
return DB.Pojo.select(User.class)
.like(name != null, User::getName, name)
.page(pageNum, pageSize)
.orderByDesc(User::getCreateTime)
.queryPage();
}

// ========== 新增 ==========
@PostMapping
public Long add(@RequestBody User user) {
DB.Pojo.insert(user); // 自动回填主键到 user 对象
return user.getId();
}

// ========== 修改 ==========
@PutMapping
public void update(@RequestBody User user) {
DB.Pojo.update(user).eq(User::getId, user.getId()).execute();
}

// ========== 删除 ==========
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id) {
DB.Pojo.delete(User.class).eq(User::getId, id).execute();
}
}

4. 查看日志

[SQL] SELECT * FROM user WHERE id = 1 AND is_deleted = 0
[耗时] 12ms
[调用] caller:UserController.java:15

恭喜!你已经完成了第一个 DLZ-DB 应用!