public interface IDBDialect
Modifier and Type | Method and Description |
---|---|
void |
accept(Connection conn)
初始化方言,根据JDBC接口进一步嗅探出数据库版本和JDBC驱动信息,从而让方言更加适配数据库操作。
当有一个数据库实例连接初次创建时调用.
|
boolean |
containKeyword(String name)
检查数据库是否包含指定的关键字,用来进行检查的对象名称都是按照getColumnNameIncase转换后的,因此对于大小写统一的数据库,
这里无需考虑传入的大小写问题。
|
String |
getCatalog(String catalog)
像Oracle,其Catlog是不用的,那么返回null mySQL没有Schema,每个database是一个catlog,那么返回值
同时修正返回的大小写
|
long |
getColumnAutoIncreamentValue(ColumnMapping mapping,
Connection db) |
String |
getColumnNameToUse(ColumnMapping name)
获得大小写正确的列名
|
String |
getDefaultSchema()
不同数据库登录后,所在的默认schema是不一样的
Oracle是以登录的用户名作为schema的。
mysql是只有catlog不区分schema的。
derby支持匿名访问,此时好像是位于APP这个schema下。
SQL Server默认是在dbo这个schema下
因此对于无法确定当前schema的场合,使用这里提供的schema名称作为当前schema |
String |
getDriverClass(String url)
获取数据库的默认驱动类
|
default String |
getJooqDialect() |
String |
getName() |
String |
getObjectNameToUse(String name)
Oracle会将所有未加引号的数据库对象名称都按照大写对象名来处理;MySQL则对表名一律转小写,列名则保留原来的大小写。
为了体现这一数据库策略的不同,这里处理大小写的问题。
|
default String |
getQueryDslDialect() |
String |
getSchema(String schema)
对于表名前缀的XX.
|
boolean |
has(Feature feature)
判断数据库是否支持某项特性
|
boolean |
isCaseSensitive()
数据库对象是否为大小写敏感的
一般来说对应引号中的表名列名都是大小写敏感的。此处仅指没有引号的情况下是否大小写敏感
|
boolean |
notHas(Feature feature)
判断数据库是否不支持某项特性
|
boolean notHas(Feature feature)
feature
- boolean has(Feature feature)
feature
- String getCatalog(String catalog)
catalog
- String getSchema(String schema)
schema
- String getDriverClass(String url)
url
- Derby根据连接方式的不同,会有两种不同的DriverClass,因此需要传入urlboolean containKeyword(String name)
name
- String getObjectNameToUse(String name)
目前的原则是:凡是涉及
schema/table/view/sequence/dbname等转换的,都是用此方法,凡是涉及列名转换,列别名定义的都用
getColumnNameToUse(sf.database.meta.ColumnMapping)
方法
name
- String getColumnNameToUse(ColumnMapping name)
name
- long getColumnAutoIncreamentValue(ColumnMapping mapping, Connection db)
String getDefaultSchema()
void accept(Connection conn)
conn
- boolean isCaseSensitive()
default String getQueryDslDialect()
default String getJooqDialect()
Copyright © 2020. All rights reserved.