转载

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结:

方法一:

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

①需要添加异常处理

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

③写法为Resources.class.getResourceAsStream()

方法二:

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

①需要添加异常处理

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

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

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

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

原文  https://www.maiyewang.com/archives/93830
正文到此结束
Loading...