rcp集成ibatis的实现

想通过RCP直接连数据库,网上有不少集成jdbc的教程,但是jdbc太繁琐,所以打算集成ibatis

RCP因为自身的特性,直接通过ibatis的类加载资源,报找不到文件的。下面sql-map-config.xml文件,找不到

String resource = "sql-map-config.xml";

reader = Resources.getResourceAsReader(resource);

google好久,说是rcp的87775号bug,解决办法是自己重新实现classloader加载资源。

实现如下

try {
       String pathstr = "sql-map-config.xml";
        System.out.println(pathstr);
        InputStream is = getResourceAsStream(getClassLoader(),pathstr);
        reader = new InputStreamReader(is);
        sqlMapClient =  SqlMapClientBuilder.buildSqlMapClient(reader);
        return sqlMapClient;
      } catch (Exception e) {
        e.printStackTrace();
      }finally{
        currThread.setContextClassLoader(originalContextCL);
      }

调用的函数实现

private static  ClassLoader getClassLoader() {
    ClassLoader cl = null;
       cl = Thread.currentThread().getContextClassLoader();
     return cl;
   }
 public static  InputStream getResourceAsStream(ClassLoader loader, String resource) throws IOException {
     InputStream in = null;
     if (loader != null)
  {
      in = loader.getResourceAsStream(resource);
  }
     if (in == null)
     {
      in = ClassLoader.getSystemResourceAsStream(resource);
     }
     if (in == null) throw new IOException("Could not find resource " + resource);
     return in;
   }

同时需要在rcp的plugin.xml里Runtime页的classpath项添加ibatis和数据库驱动jar包。

其他的照着正常ibatis在普通项目中的使用而使用就可以了

 

主要参考网址http://www.ibm.com/developerworks/cn/opensource/os-lo-ecl-classloader/index.html


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值