DLZ-DB 帮助文档 - 核心概念
设计理念
DLZ-DB 的核心设计理念是:极简、直观、可追踪
传统模式:
Controller → Service → ServiceImpl → Mapper → XML → DB
DLZ-DB 模式:
Controller → DB → 数据库
架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ DB (统一入口) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────── SQL Builder (SQL构建器) ────────────────┐ │
│ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌──────────┐ │
│ │ Pojo │ │ Table │ │ Jdbc │ | Sql │ | Batch │ │
│ │ (实体操作) │ │(表名操作)│ │ (原生SQL) │ │ (预设 SQL)│ │ (批处理) │ │
│ └───────────┘ └───────────┘ └───────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ └────────────────────────┼──────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ SQL Logger (日志) │ │
│ │ · 完整SQL · 耗时 · 代码定位 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────┐ ┌─────────────┐ │
│ │ SqlExecutor (接口) │ < -------- > │ Database │ │
│ └────────────────────────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 结果取值器 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
└────────────────────────────────────┼────────────────────────────────────┘
▼
┌─────────────┐
│ 应用 │
└─────────────┘
核心组件
入口
| 使用模式 | 职责 | 说明 |
|---|---|---|
| DB | 统一入口 | 所有操作的起点 |
DB 入口样例
// 查询
DB.Pojo.select(User.class) // Pojo查询(推荐)
DB.Pojo.select(user)
DB.Table.select("user") // Table查询
DB.Jdbc.select(sql, args) // 原生 SQL 查询
DB.Sql.select("key.xxx") // 预设 SQL 查询
// 插入
DB.Pojo.insert(user)
DB.Table.insert("user")
DB.Jdbc.execute(sql, args)
DB.Sql.execute("key.xxx")
// 更新
DB.Pojo.update(user)
DB.Pojo.update(User.class)
DB.Table.update("user")
DB.Jdbc.execute(sql, args)
DB.Sql.execute("key.xxx")
// 删除
DB.Pojo.delete(User.class)
DB.Pojo.delete(user)
DB.Table.delete("user")
DB.Jdbc.execute(sql, args)
DB.Sql.execute("key.xxx")
// 批量处理
DB.Batch.insert(List)
DB.Batch.update(sql, List<Object[]>)
5种包装器
| 构造器 | 职责 | 说明 |
|---|---|---|
| Pojo | Bean 操作 | 基于实体类的类型安全操作 |
| Table | 表名操作 | 基于表名和字段名的动态操作 |
| Jdbc | 原生 SQL | 执行原生 SQL,?传参 |
| Sql | 预设 SQL | #{key} ${key}传参,支持条件判断 |
| Batch | 批量处理 | 批量更新和删除 |
数据库操作执行方法
| 取值方法 | 结果类型 | 说明 |
|---|---|---|
| queryOne | 取得单条结果 | 查询到多条时取第一条,取不到结果返回空 |
| queryPage | 取得带翻页结果集 | 总条数和当前页结果 |
| queryList | 查询结果集 | 结果集查询为列表 |
| count | 计算条数 | 将普通sql转换成count,取得数据条数 |
| execute | 影响条数 | 执行增加,删除,更新操作 |
工作流程
查询数据流程
1. 调用 DB.Pojo.select()
↓
2. 链式添加条件 (.eq(), .like(), ...)
↓
3. 链式添加排序,分页 (.orderBy(), .page()...)
↓
4. 构建 SQL
↓
5. 日志输出(SQL + 耗时 + 代码位置)
↓
6. 执行 JDBC
↓
7. 结果映射(Bean / Map / ResultMap)
↓
8. 返回结果