author:wjw
Groovy SQL 重复创建时,将导致本地嵌入式数据库锁定,如Hsqldb,sqlite等,为保存系统中只存一份SQL对象,通过一个单例模式的工具类实现对SQL的托管,并统一归数据库访问层调用.
示例代码:
class GroovySqlHsqlDbUtil {
def sql;
def static instance
//单例模式
static {
instance=new GroovySqlHsqlDbUtil()
}
static def getInstance(){
if(instance==null){
instance=new GroovySqlHsqlDbUtil()
}
return instance
}
private GroovySqlHsqlDbUtil(){
getGroovySql()
}
//获取Groovy 数据库服务对象 Sql
public Sql getGroovySql(){
def dbc= new GroovySqlDataSourceConfig();
//jdbc:hsqldb:mem:testDB
//
def db = [url:'jdbc:hsqldb:file:E:/WjWork/MIS/med_cmp_for_saler_prj/db/plugs_gv_web_db', user:'SA', password:'SA', driver:'org.hsqldb.jdbc.JDBCDriver']
if(this.sql==null){
// def sql=Sql.newInstance("jdbc:jtds:sqlserver://localhost:4687/shield","sa","sa","net.sourceforge.jtds.jdbc.Driver");
//sqlserver
// def sql=Sql.newInstance("jdbc:jtds:sqlserver://${dbc.getHost()}:${dbc.getPort()}/${dbc.getDbName()}","${dbc.getUser()}","${dbc.getPassword()}","net.sourceforge.jtds.jdbc.Driver");