MyBatis入门中,静态代码库是不是只能放静态成员、实例成员,Reader不是既不静态也不实例嘛。

MyBatis入门中,静态代码库是不是只能放静态成员、实例成员,Reader不是既不静态也不实例嘛。

public abstract class Reader implements Readable, Closeable{
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-09-17 13:20:36

同学你好,静态代码中只能访问类中静态成员,无法访问类中的非静态成员。

Resources.getResourceAsReader("mybatis-config.xml"):此方法是静态方法,方法的参数是String类型的,方法的返回值是Reader类型的,也就是会返回一个Reader类型的实例。

https://img1.sycdn.imooc.com//climg/6144230a097160f708140247.jpg

new SqlSessionFactoryBuilder().build(reader):表示创建SqlSessionFactoryBuilder的实例并调用build方法,build是非静态的方法,方法的参数为Reader类型,方法返回值是SqlSessionFactory类型。参考代码如下:

https://img1.sycdn.imooc.com//climg/6144236b09c09f3107670181.jpg

祝学习愉快~

  • 提问者 童真模式启动 #1

    敲错了,不是“静态代码库”是“静态代码块”。是不是这样理解:

    (1)Reader reader= Resources.getResourceAsReader("mybatis-config.xml"); ——静态方法,可以出现在静态代码块

    ​(2)SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);——实例方法,可以出现在静态代码块

    2021-09-18 09:42:04
  • 同学你好,老师没能很好的理解“可以出现在静态代码块”这句话,同学可以再具体的描述一下吗。


    getResourceAsReader方法是静态方法,可以直接通过类名来调用,getResourceAsReader方法的参数是String类型,在调用时传入String类型的参数即可。

    build方法是实例方法,需要通过实例来调用,故先创建new SqlSessionFactoryBuilder()的实例,再通过其实例调用build方法,build方法的参数是Reader类型,调用该方法是需要传入Reader类型的参数。


    祝学习愉快~

    2021-09-18 09:49:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师