可以帮忙做网站做公司,教育网站设计案例,甘肃省安装建设集团公司网站,wordpress+搜索无效1.0 MyBatis 对象分析
#xff08;1#xff09; Resources 类 Resources 类#xff0c;顾名思义就是资源#xff0c;用于读取资源文件。其有很多方法通过加载并解析资源文件#xff0c;返回不同类型的 IO 流对象。
#xff08;2#xff09; SqlSessionFactoryBuilder…1.0 MyBatis 对象分析
1 Resources 类 Resources 类顾名思义就是资源用于读取资源文件。其有很多方法通过加载并解析资源文件返回不同类型的 IO 流对象。
2 SqlSessionFactoryBuilder 类 SqlSessionFactory 的 创 建 需 要 使 用 SqlSessionFactoryBuilder 对 象 的 build() 方 法 。 由 于SqlSessionFactoryBuilder 对象在创建完工厂对象后就完成了其历史使命即可被销毁。所以一般会将该 SqlSessionFactoryBuilder 对象创建为一个方法内的局部对象方法结束对象销毁。
3 SqlSessionFactory 接口 SqlSessionFactory 接口对象是一个重量级对象系统开销大的对象是线程安全的所以一个应用只需要一个该对象即可。创建 SqlSession 需要使用 SqlSessionFactory 接口的的 openSession()方法。 ➢ openSession(true)创建一个有自动提交功能的 SqlSession ➢ openSession(false)创建一个非自动提交功能的 SqlSession需手动提交 ➢ openSession()同 openSession(false)
4 SqlSession 接口 SqlSession 接口对象用于执行持久化操作。一个 SqlSession 对应着一次数据库会话一次会话以SqlSession 对象的创建开始以 SqlSession 对象的关闭结束。 SqlSession 接口定义了操作数据的方法 例如 selectOne() ,selectList() ,insert(),update(), delete(), commit(), rollback() SqlSession 接口对象是线程不安全的所以每次数据库会话结束前需要马上调用其 close()方法将其关闭。再次需要会话再次创建。 SqlSession 在方法内部创建使用完毕后关闭。
1.1创建工具类简化代码 1 创建 MyBatisUtils 类 在zep文件夹下新建utils文件夹并在utils文件夹下创建MyBatisUtils 工具类
package com.zep.utils;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class MybatisUtils {private static SqlSessionFactory factory null;/*静态代码块执行优先级高于非静态的初始化块它会在类初始化的时候执行一次执行完成便销毁*///使用 静态块 创建一次 SqlSessionFactorystatic {String config mybatis.xml; //需要和你的项目中的文件名一样try {//读取配置文件InputStream in Resources.getResourceAsStream(config);//创建SqlSessionFactory对象使用SqlSessionFactoryBuilderfactory new SqlSessionFactoryBuilder().build(in);} catch (IOException e) {e.printStackTrace();}}// 获取SqlSession对象的方法public static SqlSession getSqlSession() {SqlSession sqlSession null;if (factory ! null) {sqlSession factory.openSession(); // 非自动提交事务}return sqlSession;}
}2 使用 MyBatisUtil 类 通过MybatisUtils.getSqlSession()直接获取sqlSession对象 SqlSession sqlSession MybatisUtils.getSqlSession()
package com.zep;import com.zep.domain.Student;
import com.zep.utils.MybatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class MyApp2 {public static void main(String[] args) throws IOException {// 5.【重要】获取SqlSession对象从SqlSessionFactory中获取SqlSessionSqlSession sqlSession MybatisUtils.getSqlSession();// 6.【重要】指定要执行的sql语句的标识。sql映射文件中的namespace “.” 标签的id值String sqlId com.zep.dao.StudentDao . selectStudents;// 7.执行sql语句通过sqlId找到语句ListStudent studentList sqlSession.selectList(sqlId);// 8.输出结果// studentList.forEach(student - System.out.println(student));for (Student student : studentList) {System.out.println(查询到的学生 student);}// 9.关闭SqlSession对象sqlSession.close();}
}
运行结果如下