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块来关闭它。
浙公网安备 33010602011771号