01 - 快速开始
1.1 环境要求
基础环境
| 环境 | 版本要求 | 说明 |
|---|---|---|
| JDK | 8+ | 支持 JDK 8、11、17、21 |
| Maven | 3.6+ | 或 Gradle 6+ |
| Spring Boot | 2.x / 3.x | Spring 环境 |
支持的数据库
| 数据库 | 版本 | 测试状态 |
|---|---|---|
| MySQL | 5.7+ | ✅ 完全支持 |
| PostgreSQL | 10+ | ✅ 完全支持 |
| Oracle | 11g+ | ✅ 完全支持 |
| 达梦 | 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>
</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<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<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 应用!