常用API: AqlSessionFactory build(InputStream inputStream) 通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象
例如如下
String resource = "org/mybatis/builder/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
其中,Resources工具类,这个类在org.apache.ibatis.io包中。Resources类帮助你从类路径下、文件系统或一个web URL中加载资源文件
SqlSessionFactory有多个方法创建SqlSession实例,简单说SqlSessionFactory的作用是造SqlSession会话对象。常用的有如下两个:
1、openSession(): 会默认开启一个事务,但事务不会自动提交,也就意味着需要主动提交该事务,更新操作数据才会持久化到数据库中
2、openSession(boolean autoCommit): 参数为是否自动提交,如果设置为true,那么不需要手动提交事务
SqlSession实例在MyBatis中是非常强大的类。里面包括所有执行语句、提交或回滚事务和获取映射器实例的方法
执行语句的主要方法如下:
1、
2、
3、int insert(String statement, Object parameter)
4、int update(String statement, Object parameter)
5、int delete(String statement, Object parameter)
演示一下上面的第1个执行语句方法,具体操作:
第一步: 在UserMapper.xml添加如下
<!--查询操作。根据id进行查询。下面那行的java.lang.Integer可以直接写成int,原因是MyBatis框架帮我们起好了别名-->
<select id="findAll3" resultType="com.huanf.domain.User" parameterType="java.lang.Integer">
<!--上面我们学的查询、插入,由于parameterType写的是对象的全包名,所以#{}要写对象里面的成员变量;
但是这里parameterType写的是'一个'具体的'简单参数类型',那么#{}里面随便写都行-->
select * from user where id=#{id}
</select>
(2)在MyBatisTest类添加如下,并运行测试
//快速入门,查询数据,测试sqlSession.selectOne()方法,也就是查询一个对象,例如根据id查询
public void test1_3() throws IOException {
//获得核心配置文件。注意写的是相对路径,也就是src/main/resources/sqlMapConfig.xml。注意下面那行的Resources包是org.apache.ibatis.io.Resources
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行操作,参数其实就是UserMapper.xml里面的<mapper>标签的namespace值,还有<select>标签的id值。语法namespace值.id值
User user = sqlSession.selectOne("zidingyi_userMapper.findAll3", 1);//表示查询id为1的数据
//测试test1_3。上面那行的User类型指的是我们的User类,该类对应的是数据库
System.out.println(user);
//释放资源
sqlSession.close();
}
执行事务的方法如下:
1、void commit() 提交事务
2、void rollback() 回滚事务
例如sqlSession.commit();