public interface Dialect extends Serializable
由于不同数据库间SQL语句的差异,导致无法统一拼接SQL,Dialect接口旨在根据不同的数据库,使用不同的方言实现类,来拼接对应的SQL。
设计模式借鉴于hutool-db
| 限定符和类型 | 方法和说明 |
|---|---|
DialectName |
dialectName()
方言名
|
String |
getPageJoinSql()
获得用于SQL字符串拼接的SQL分页字符串
|
Wrapper |
getWrapper() |
Long |
insertOrUpdate(String tableName,
com.alibaba.fastjson.JSONObject paramJson,
String[] conditions,
DbUpdateEnum dBUpdateEnum)
插入或更新
表中必须存在数据唯一性约束
更新触发条件:此数据若存在唯一性约束则更新,否则便执行插入数据
MySQL执行示例:
INSERT INTO table (param1, param2, ...) |
PageBeforeAndAfterVO |
pageBeforeAndAfter(String querySql,
PageIPO pageIPO,
Long equalsId)
根据相同的列表条件,获得上一条与下一条数据
|
PageDTO |
pageDTOBuild(String querySql,
PageIPO pageIPO) |
PageDTO |
pageDTOBuild(String tableName,
PageIPO pageIPO,
DbSortEnum dBSortEnum) |
PageDTO |
pageDTOBuild(String tableName,
String whereSql,
PageIPO pageIPO) |
void |
setWrapper(Wrapper wrapper)
设置包装器
|
Page |
toPage(PageIPO pageIPO)
转换为分页查询对象
|
com.alibaba.fastjson.JSONObject |
toParamJson(PageIPO pageIPO)
转换为Db参数Json
|
String |
updateSqlBuild(String tableName,
com.alibaba.fastjson.JSONObject paramJson,
String[] conditions,
DbUpdateEnum dBUpdateEnum) |
Wrapper getWrapper()
void setWrapper(Wrapper wrapper)
wrapper - 包装器DialectName dialectName()
Long insertOrUpdate(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)
更新触发条件:此数据若存在唯一性约束则更新,否则便执行插入数据
MySQL执行示例:
INSERT INTO table (param1, param2, ...)
VALUES
(:param1, :param2, ...)
ON DUPLICATE KEY UPDATE
condition = condition + :condition, ...
tableName - 表名paramJson - 插入或更新所用到的参数conditions - 更新条件(对应paramJson内的key值)dBUpdateEnum - 更新类型 DbUpdateEnumString getPageJoinSql()
com.alibaba.fastjson.JSONObject toParamJson(PageIPO pageIPO)
pageIPO - 分页请求对象PageDTO pageDTOBuild(String tableName, PageIPO pageIPO, DbSortEnum dBSortEnum)
PageBeforeAndAfterVO pageBeforeAndAfter(String querySql, PageIPO pageIPO, Long equalsId)
querySql - 用于查询数据的sql语句pageIPO - 分页查询参数 PageIPOequalsId - 做比较的条件ID(将与查询结果的主键ID做比较)String updateSqlBuild(String tableName, com.alibaba.fastjson.JSONObject paramJson, String[] conditions, DbUpdateEnum dBUpdateEnum)
Copyright © 2020 Pivotal Software, Inc.. All rights reserved.