• 记录Mybatis框架下有关getResourceAsStream方法调用的使用注意事项


      上次简单记录了学习Mybatis框架遇到的问题及解决方法,今天又发现了一些细小的问题,在这里记录下来。

      在使用Mybatis框架操作数据库时,其中需要创建输入流将xml配置文件加载进来,用到的方法是getResourceAsStream(资源)

      但是,这里需要注意一下,getResourceAsStream方法在多个包中都存在,但是不同包中对于方法的使用略有差别,我们再编程时大多时候使用快捷键生成代码而非完全手工输入,在自动生成是很容易忽略方法源,这里着重说明区别,区别就是一个斜杠——”/“

      或许有很多小伙伴在遇到Exception in thread "main" java.lang.NullPointerException错误时,从网上找到的解决方法是getResourceAsStream(/+配置文件名.xml)

      这里,我调用方法的写法为:

      InputStream inputStream = Resources.class.getResourceAsStream("/MyConfig.xml");

      编写时发现:在这种方式下,不需要进行抛出或者自定义异常处理,目前还不清楚为什么不需要,以下截图主要观察红色标出的一行,可见需要在xml配置文件前加上”/“。

     

     

     

      但在我使用时意外又调用了不同包下的getResourceAsStream方法,同样添加一个”/“,却报错了,错误提示为:java.io.IOException: Could not find resource /MyConfig.xml

      这里,我调用方法的写法为:

      InputStream inputstream = org.apache.ibatis.io.Resources.getResourceAsStream("MyConfig.xml");

      经过一番尝试发现:在这种方式下,不需要添加”/“,但是需要加入抛出或者自定义异常处理,以下截图主要观察红色标出的一行,没有”/“。

      

     

     

      总结:

        方法一:      

        ①需要添加异常处理

        ②xml配置文件前需要添加”/“

        ③写法为Resources.class.getResourceAsStream()

        

        方法二:

     

         ①需要添加异常处理

        ②xml配置文件前不需要添加"/"

        ③写法为:org.apache.ibatis.io.Resources.getResourceAsStream(),部分编程环境可能直接是Resources.getResourceAsStream(),例如myecplise编程环境就不需要前面的调用路径org.apache.ibatis.io(我是用的是ecplise编程环境,不知道为什么一定需要加上调用路径,不加还报错 = =!)

     

        注意:以上方法的讨论的代码都是使用Alt+”/“快捷键自动生成的,不建议自己打,一方面提高编程效率,节省时间;另一方面可降低编写错误的风险。

        后记:有关抛出异常处理的详细内容在学习java时学习过,但没有深入理解,我觉得需要补充一下。

     

     

  • 相关阅读:
    求欧拉路径模版 fleury算法
    回学校前的计划
    高斯消元模版
    usaco 3.2 Stringsobits 数位dp
    dijkstra模版
    codeforces AIM Tech Round (Div. 2)
    bnuoj 51275 并查集按深度合并建树
    bzoj3674: 可持久化并查集
    poj2104 求区间第k大 可持久化线段树
    Miller_Rabin判断素数模版
  • 原文地址:https://www.cnblogs.com/moegarn/p/12856229.html
Copyright © 2020-2023  润新知