Eva
Java粉絲募集中
  • 簡介
  • 我們的優勢
  • 最新消息
  • 下載與使用
  • 範例與說明
    • Eva Objects >
      • Bean類別定義
      • Entity型別定義
      • Struct型別定義
      • 建立Entity空白物件
      • 建立Entity修改物件
      • 建立Entity條件物件
      • 建立Struct值物件
    • Eva_ORM >
      • ORM程式主體
      • 使用條件物件執行操作
      • 執行更複雜條件的操作.
      • 分頁取回資料
      • 操作JDBC的參數
      • Array Property的操作
      • Collection Property的操作
      • 更複雜的Collection Property
      • 指定表格名稱
      • 新增資料庫Dialect
    • Eva_IOC >
      • IOC程式主體
      • AOP應用
    • Eva_Struct >
      • Struct範例
      • Bit Strcut範例
      • 指標範例
      • 於Eva_ORM中使用
    • Eva_Sort >
      • 依指定Properties排序
      • 部份排序
      • 優先排序部份
    • Eva_Cache >
      • hashing-based cache
      • 非hashing-based cache
  • API列表
  • 技術支援
    • 協助開發
  • 相關書籍

新增資料庫Dialect.

Dialect與DBConnectionProvider類別, 是Eva_ORM用以連接資料庫與處理資料型別對應的實際類別, 若使用者相自行新增資料庫支援, 只需要定義並註冊新的Dialect與DBConnectionProvider類別. 在下例中是連接MySQL5資料庫的Dialect範例, Eva_ORM中的Dialect類別定義, 與Hibernate內的Dialect類別定義非常相似.
package com.logntw.eva.sql.dialect;

import com.logntw.eva.jdbc.JDBCClazz;

public class MySQL_5_Dialect extends Dialect
{  
  public final static MySQL_5_Dialect INSTANCE = new MySQL_5_Dialect();

  public MySQL_5_Dialect()
  {    
    indexable( JDBCClazz.BIT, "bit" );
    indexable( JDBCClazz.BIGINT, "bigint" );
    indexable( JDBCClazz.SMALLINT, "smallint" );
    indexable( JDBCClazz.TINYINT, "tinyint" );
    indexable( JDBCClazz.INTEGER, "integer" );
    indexable( JDBCClazz.CHAR, "char(1)" );
    indexable( JDBCClazz.REAL, "float" );
    indexable( JDBCClazz.DOUBLE, "double precision" );
    indexable( JDBCClazz.DATE, "date" );
    indexable( JDBCClazz.TIME, "time" );
    indexable( JDBCClazz.TIMESTAMP, "datetime" );
    notIndexable( JDBCClazz.VARBINARY, 
        "tinyblob", "blob", "mediumblob", "longblob");
    notIndexable( JDBCClazz.LONGVARBINARY, "mediumblob", "longblob");
    indexable( JDBCClazz.NUMERIC, "decimal(N,M)" );
    notIndexable( JDBCClazz.BLOB, "longblob" );
    notIndexable( JDBCClazz.CLOB, "longtext" );
    indexable( JDBCClazz.VARCHAR, "varchar(N)", "longtext");
    notIndexable( JDBCClazz.LONGVARCHAR, "longtext" );
  }

  @Override
  public String name()
  {    
    return "mysql5";
  }
  
  @Override
  public String getIdentityColumnString()
  {
    return "not null auto_increment"; //starts with 1, implicitly
  }
  
  @Override
  public boolean supportsLimit() 
  {
    return true;
  }
  
  @Override
  public StringBuilder getLimitStringEnd(StringBuilder sqlStmt) 
  {
    return sqlStmt.append(" limit ? , ?");        
  }
  
    @Override
  public String getReadLockString(int timeout) 
  {
    return " lock in share mode";
  }    
  
  @Override
  public SubConditionSQL updateWithSubCondition()
  {
    return SubConditionSQL.JOIN_FIRST;
  }
  
  @Override
  public SubConditionSQL deleteWithSubCondition()
  {
    return SubConditionSQL.JOIN_FIRST;
  }
      
  @Override
  public ReturnGeneratedKeys returnGeneratedKeys()
  {
    return ReturnGeneratedKeys.INSERT;
  }
}
Powered by Create your own unique website with customizable templates.