zoukankan      html  css  js  c++  java
  • Mybatis 的配置xml和properties放在jar包以外的一种方法

    1.问题

    开发时候,将xml和properties放resources,直接可以访问到,然而打包后这两个文件也一同被打包到jar包里面,如果发布后想修改就会比较麻烦,所以希望将xml配置文件和properties放在jar包以外来做,这样就可以动态来指定环境。

    2.分析

    我们查看sessionfactory的源码会发现,读取properties部分的代码是使用两种机制来做的。
    一是:Resources.getResourceAsProperties(resource)
    二是:Resources.getUrlAsProperties(url)
    也就是可以使用URL的标准写法来做配置,比如xml的位置和mapper的xml的位置应该都可以这样来写。所以做一次尝试。
    我们把用一个InputStream来读取mybatis的xml文件,作为输入,在这个xml中使用URL方式来定义数据的配置文件也就是properties,mapper也使用url方式来定义。

    3.解决

    我们将SqlSessionFactory的创建方法修改一下,变成类似如下的方式。
    先从conf目录读取配置文件
    File conf_file = new File(System.getProperty("user.dir")+"/conf/config.xml");
    InputStream inputStream1 = new FileInputStream(conf_file);
    //2.获取SqlSessionFactory 分别使用不同的环境来进行连接配置
    sessionFactory_mysql_sys = new SqlSessionFactoryBuilder().build(inputStream1,"mysql_sys");
    在将config.xml中的properties部分和mapper部分修改为使用url方式来加载。类似


    就是要特别注意url中file://的写法就可以了。这样就可以将properties文件和mapper文件都定义在jar包以外了。
    当然还可以使用更为负载的方法比如手工方法创建SqlSessionFactory,那样就解决的更为彻底,但是因为目前我的做法中还要引入一个spring来管理bean,改造显得稍稍麻烦了一些,这次就不介绍了。可以另起一篇来写一下。
    更为彻底的解耦。

  • 相关阅读:
    工作笔记总结——数据库
    PHP 的本地文件缓存处理类(非常高效)
    word如何去掉背景色
    安装CORBA产品visibroker注意问题
    [Python小菜]Bulidin Function Type使用小记
    java正则表达式和网页爬虫的制作
    工作笔记总结——前台js和jQuery
    thinkphp+ajax 实现点击加载更多数据
    第三方微信登录
    substring() 方法用于提取字符串中介于两个指定下标之间的字符。
  • 原文地址:https://www.cnblogs.com/pcode/p/9202032.html
Copyright © 2011-2022 走看看