mybatis第一讲主讲人:胡少颖“学生选课”引发的“纠结”“犀利”的oracleSQL面试题本次培训的范围(1)mybatis的运行原理(2)SqlSessionFactory的创建(读取XML文件创建和Spring托管创建)(3)mybatis相关元素的生命周期本次培训的目的了解mybatis运行原理,并能使用mybatis进行开发。一、Mybatis运行原理是什么?一、Mybatis运行原理mybatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs映射成数据库的记录。MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。一、Mybatis运行原理一、Mybatis运行原理sqlSessionFactoryBuildersqlSessionFactorysqlSession二、Mybatis创建sqlSessionFactoryXml(数据源,事务管理器)sqlSessionFactoryReader(IO类)sqlSessionFactoryBuildersqlSessionopenclose(一)通过读取XML方式二、Mybatis创建sqlSessionFactory不适宜操作复杂的查询(mybatis提供自动匹配响应的xml文件的方式解决这种不足)(二)通过程序建立二、Mybatis创建sqlSessionFactory引申知识点:mybatis注解二、Mybatis创建sqlSessionFactory引申知识点:java放射机制二、Mybatis创建sqlSessionFactory推荐博客引申知识点:java放射机制JAVA反射机制主要提供了以下功能:1.在运行时判断任意一个对象所属的类2.在运行时构造任意一个类的对象3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)三、Mybatis的命名空间命名空间是必须的,作用:(1)使用更长的完全限定名来隔离语句。(2)使接口绑定成为可能。命名空间的解析方式:(1)直接查找完全限定名,如果发现,则使用。(2)短名称可以用来引用任意含糊对象,必须唯一。四、Mybatis的范围和生命周期sqlSessionFactoryBuilder最佳范围是本地方法范围.sqlSessionFactory一旦创建,在应用执行期间都存在,在应用期间不要重复建立多次。(思考:如何做到这样的效果?)sqlSession每个线程应该有自己的sqlSession实例。(思考为什么?)最佳范围是请求和方法范围。不能将实例的引用放到一个类的静态字段,甚至实例字段中。不能放到任何类型的管理范围中,例如httpSession中。sqlSession需要明确关闭。mapper映射器是创建绑定映射语句的接口。最佳的范围是方法范围,不需要明确关闭。四、范围和生命周期引申知识点:(1)线程安全线程的可见性和顺序性synchronized、volatile(2)spring(1)控制反转(2)面向切面(3)容器谢谢THANKS共勉:每个人一天都是24小时,8小时用来工作,8小时用来睡觉。人和人的差异取决于另外的8个小时。