Mybatis三大基本要素

 

SqlSessionFactoryBuider对象 
SqlSessionFactoryBuider负责构建SqlSessionFactory,并提供了多个build()方法的重载,

源码发现都是调用build(InputSteam inputSteram     string environment       Properties properties )

其参数environment  与properties 都可以为  NULL  去掉重复的  剩下的只有

就可以发现配置信息可以以三种形式提供给SqlSessionFactoryBuider 的 build()方法, 字节流,字符流,类

    

  SqlSessionFactoryBuider 生命周期和作用域

       用过即丢(100块都不给人家!)。一旦创建SqlSessionFactoryBuider  对象后,这个类就不需要存在了。因此最佳的范围就是存在方法体内,也就是局部变量而已。

 

 

SqlSessionFactory对象 
SqlSessionFactory简单的理解就是创建SqlSession实例的工厂 ,所有的MyBatis 应用都是以SqlSessionFactory 实例为中心.SqlSessionFactory 可以通SqlSessionFactoryBuider

获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

通过流来创建SqlSessionFactory对象 

                String resource="mybatis-config.xml";
		
		SqlSession sqlsession=null;
		//获取xml输入流
		try {
			InputStream is=Resources.getResourceAsStream(resource);
			//创建SqlsessionFactory对象,完成对配置文件的读取
			SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
			//创建Sqlsession
			sqlsession =factory.openSession();
			//调用mapper文件对数据进行操作,必须将mapper文件引入到mybatis-config.xml中
			num=sqlsession.selectOne("com.lbl.dao.user.UserMapper.count");//xml中的路径
			logger.debug("count:"+num);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
		}

  

 

 

SqlSession对象 
SqlSession对象由SqlSessionFactory类创建,需要注意,每个线程都应该有自己的SqlSession实例。SqlSession的实例不能共享,它是线程不安全的,所以不能再Servlet中生命该对象的一个实例变量。因为Servlet是单例的,申明成实例会造成线程安全问题,也绝不能将SqlSession实例的对象放在一个类的静态字段甚至是实例字段中。还不可以将Sqlsession实例的对象放在任何类型的管理范围中,比如Servlet对象中的Httpsession会话。在接收到HTTP请求时,可以打开一个SqlSession对象操作数据库,然后返回响应,就可以关闭它。关闭SqlSession很重要,应该确保使用finally块来关闭它。

posted on 2017-12-18 15:39  站立的猫  阅读(255)  评论(0)    收藏  举报

导航