All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.beetl.sql.core.SQLManagerBuilder Maven / Gradle / Ivy

There is a newer version: 3.30.13-RELEASE
Show newest version
package org.beetl.sql.core;

import org.beetl.sql.core.db.DBStyle;
import org.beetl.sql.core.db.MySqlStyle;
import org.beetl.sql.ext.DebugInterceptor;

import java.util.*;

/**
 * SQLManager 构建器: 为了简化SQLManager的构建过程
 * 
 * 使用:
 * ConnectionSource ds = ConnectionSourceHelper.getSimple(driver, url, userName, password);
 * SQLManagerBuilder smBuilder = SQLManager.newBuilder(ds);
 * SQLManager sm = smBuilder.build();
 * 
*

* 如果在构建器中没有进行任何配置, 那么使用的默认值是: *

    *
  • 属性名 : 默认值
  • *
  • dbStyle : new MySqlStyle();
  • *
  • sqlLoader : new ClasspathLoader()
  • *
  • nc : new DefaultNameConversion()
  • *
  • inters : new Interceptor[]{}
  • *
  • defaultSchema : null
  • *
  • beetlPs : new Properties()
  • *
*

*
* create time : 2017-04-28 14:44 * * @author [email protected] */ public class SQLManagerBuilder { /** 额外的beetl配置 */ Properties beetlPs; /** 拦截器 */ Interceptor[] inters; /** 数据库默认的shcema,对于单个schema应用,无需指定,但多个shcema,需要指定默认的shcema */ private String defaultSchema; /** 数据库风格 */ private DBStyle dbStyle; /** sql加载 */ private SQLLoader sqlLoader; /** 名字转换器 */ private NameConversion nc; /** 数据库连接管理 */ private ConnectionSource ds; /** 拦截器 */ private List interceptorList = new LinkedList(); SQLManagerBuilder(ConnectionSource ds) { this.ds = ds; } /** * @return 构建 SQLManager */ public SQLManager build() { DBStyle dbStyle = this.getDbStyle(); SQLLoader sqlLoader = this.getSqlLoader(); NameConversion nc = this.getNc(); Interceptor[] inters = this.getInters(); String defaultSchema = this.getDefaultSchema(); Properties ps = this.getBeetlPs(); SQLManager sm = new SQLManager(dbStyle, sqlLoader, ds, nc, inters, defaultSchema, ps); return sm; } /** * 添加拦截器, 不会与inters冲突, 只会追加 * * @param interceptor 拦截器 * @return this */ public SQLManagerBuilder addInterceptor(Interceptor interceptor) { this.interceptorList.add(interceptor); return this; } /** * 添加 DebugInterceptor 不是必须的,但可以通过它查看sql执行情况
* 不会与inters冲突, 只会追加 * * @return this */ public SQLManagerBuilder addInterDebug() { this.interceptorList.add(new DebugInterceptor()); return this; } private Properties getBeetlPs() { if (beetlPs == null) { this.beetlPs = new Properties(); } return beetlPs; } /** * @param beetlPs 额外的beetl配置 * @return this */ public SQLManagerBuilder setBeetlPs(Properties beetlPs) { this.beetlPs = beetlPs; return this; } private String getDefaultSchema() { return defaultSchema; } /** * @param defaultSchema defaultSchema * @return this */ public SQLManagerBuilder setDefaultSchema(String defaultSchema) { this.defaultSchema = defaultSchema; return this; } private Interceptor[] getInters() { if (this.inters == null) { this.inters = new Interceptor[]{}; } // 添加额外的拦截器 if (this.interceptorList.size() > 0) { Map map = new HashMap(); for (Interceptor inter : interceptorList) { String name = inter.getClass().getName(); map.put(name, inter); } for (Interceptor inter : inters) { String name = inter.getClass().getName(); map.put(name, inter); } inters = new Interceptor[map.size()]; int i = 0; for (Interceptor inter : map.values()) { this.inters[i++] = inter; } } return inters; } /** *

     * 创建一个SQLManager,DebugInterceptor 不是必须的,但可以通过它查看sql执行情况
     * Interceptor[] inters = new Interceptor[]{new DebugInterceptor()};
     * 
* * @param inters 拦截器 * @return this */ public SQLManagerBuilder setInters(Interceptor[] inters) { this.inters = inters; return this; } private DBStyle getDbStyle() { if (dbStyle == null) { dbStyle = new MySqlStyle(); } return dbStyle; } /** * @param dbStyle 数据库风格 * @return this */ public SQLManagerBuilder setDbStyle(DBStyle dbStyle) { this.dbStyle = dbStyle; return this; } private SQLLoader getSqlLoader() { if (sqlLoader == null) { sqlLoader = new ClasspathLoader(); } return sqlLoader; } /** * @param root sql加载 目录 * @return this */ public SQLManagerBuilder setSqlLoader(String root) { this.sqlLoader = new ClasspathLoader(root); return this; } /** * @param sqlLoader sql加载 * @return this */ public SQLManagerBuilder setSqlLoader(SQLLoader sqlLoader) { this.sqlLoader = sqlLoader; return this; } private NameConversion getNc() { if (nc == null) { nc = new DefaultNameConversion(); } return nc; } /** * @param nc 名字转换器 * @return this */ public SQLManagerBuilder setNc(NameConversion nc) { this.nc = nc; return this; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy