1、MyBatis的关键核心对象SqlSessionFactory和SqlSession
SqlSessionFactory
是单个数据库映射关系经过编译后的内存镜像。
此对象实例是通过SqlSessionFactoryBuilder对象加载mybatis配置文件产生,每一个MyBatis的应用程序都是以一个SqlSessionFactory对象的实例为核心。是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,使用单例模式。SqlSessionFactory是创建SqlSession的工厂。
SqlSession
是执行持久化操作的对象,是应用程序与持久存储层之间执行交互操作的一个单线程对象。底层封装JDBC连接,此对象中包含对数据库所有执行SQL操作的方法。SqlSession实例直接执行已映射的SQL语句。每个线程有一个自己SqlSession实例。SqlSession实例不能被共享,这样是不安全的。SqlSession实例不允许用静态字段,实例的引用不使用任何的类型的管理。
2、使用MyBatis的mapper接口调用时有哪些要求?
① Mapper接口方法名和mapper.xml中定义的每个sql的id相同
② Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
③ Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
④ Mapper.xml文件中的namespace即是mapper接口的类路径。
3、mapper编写方式?
使用mapper扫描器(正在使用中)
1、mapper.xml文件编写,
注意:
mapper.xml中的namespace为mapper接口的地址
mapper接口中的方法名和mapper.xml中的定义的statement的id保持一致
如果将mapper.xml和mapper接口的名称保持一致则不用在sqlMapConfig.xml中进行配置
2、定义mapper接口
注意mapper.xml的文件名和mapper的接口名称保持一致,且放在同一个目录
3、配置mapper扫描器
4、使用扫描器后从spring容器中获取mapper的实现对象 扫描器将接口通过代理方法生成实现对象,要spring容器中自动注册,名称为mapper 接口的名称。