21.05.03
mybatis中运用的主要类的介绍
1)Resources : mybatis中的一个类,负责读取主配置文件
//1.定义mybatis主配置文件的名称,从类路径开始
String config="mybatis.xml";
//2.读取这个config表示的文件
InputStream in= Resources.getResourceAsStream(config);
2)SqlSessionFactoryBuilder : 创建SqlSessionFactory对象,每一个MyBatis的应用程序的入口是SqlSessionFactoryBuilder。
//3.创建了SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder bulider=new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory=bulider.build(in);
3)SqlSessionFactory :SqlSessionFactory对象是一个重量级对象,它的主要功能是创建SqlSession对象,和SqlSessionFactoryBuilder对象一样,没有必要每次访问Mybatis就创建一次SqlSessionFactory,通常的做法是创建一个全局的对象就可以了。
SqlSessionFactory 作用:获取SqlSession对象。
//5.获取SqlSession对象,从SqlSessionFactory中获取SqlSession
SqlSession sqlSession=factory.openSession();
openSession()方法说明:
1.openSession() : 无参数的,获取的是非自动提交事务的SqlSession对象
2.openSession(boolean):openSession(true) 获取自动提交事务的sqlSession.
openSession(false) 非自动提交事务的sqlSession.
4)SqlSession:
SqlSession接口: 定义了操作数据的方法
使用要求:SqlSession对象不是线程安全的,需要在方法内部使用,在执行sql语句之前,使用openSession()方法,在执行完sql语句后,需要关闭它,执行SQL Session.close().
MyBatis 动态代理
mybatis根据dao的方法调用,获取执行sql语句的信息。
mybatis根据你的dao接口,创建出一个dao接口的实现类,并创建这个类的对象。完成SqlSession调用方法,访问数据库。
1.dao对象,类型是StudentDao,全限定名称和namespace是一样的。
2.当发名称,selectStudents,这个方法就是mapper文件中的id值selectStudents
3.通过dao中方法的返回值也可以确定mybatis要调用的SqlSession的方法
如果返回值是List,调用的是SqlSession.selectList()方法
如果返回值不是List,看mapper文件中的标签是,就会调用SqlSession的insert,upate等方法
使用时需要使用sqlsession.getMapper()获取到接口然后实现增删改查。getMapper()通过IStudentDao这个名字找到mapper.xml中namespace = IStudentDao的mapeer后返回给dao,这个dao就将dao接口文件和mapper.xml文件链接在一起。dao调用接口文件的方法后,接口文件的放法去找xml文件中对应的方法名的sql来实现增删查改。
public class TestMybatis {
@Test
public void testSelect(){
SqlSession sqlSession= MyBatisUtils.getSqlSession();
StudentDao dao=sqlSession.getMapper(StudentDao.class);
//调用dao方法,执行数据库的操作
List<Student> studentList=dao.selectStudents();
for(Student stu:studentList){
System.out.println(stu);
}
}
}