发表于: 2017-08-05 22:06:54
2 1044
今天完成的事情:
1、mybatis是什么?
mybatis是一个持久层的框架,mybatis是一个不完全的ORM框架,sql语句需要程序员自己去编写,但是mybatis也有映射(输入参数映射,输出结构映射)
2、mybatis框架的执行过程:
(1)配置mybatis的配置文件,mybatis.xml文件,
(2)通过配置文件加载mybatis运行环境,创建一个sqlsessionFcatory会话工厂
(3)通过sqlSessionFactory创建sqlsessionbean,sqlsession是一个面向用户接口(提供操作数据库方法),实现对象线程不安全的,sqlsession应用需要写在方法体内。
(4)调用sqlsession的方法去操作数据,如果提交事务,需要执行sqlsession.commit()方法。
(5)释放资源,关闭失去了sqlsession.close()。
3.使用MyBatis的mapper接口调用时有哪些要求?
(1)Mapper接口方法名和mapper.xml中定义的每个sql的id相同
(2)Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
(3)Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
(4)Mapper.xml文件中的namespace即是mapper接口的类路径。


4.MyBatis的一级缓存和二级缓存?
mybatis会在一次会话后,一个sqlsession对象中创建一个本地缓存(local cache),对于每一次查询,mybatis首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。Mybatis内部存储缓存使用一个HashMap,key为hashCode+sqlId+Sql语句。(不同的sqlsession之间的缓存数据区域即HashMap是互不影响的)value为从查询出来映射生成的java对象
mybatis的二级缓存即查询缓存,它的作用域是一个mapper的namespace,即在同一个namespace中查询sql可以从缓存中获取数据。二级缓存是可以跨SqlSession的。
明天计划的事情:
明天有点事情,请一天假
遇到的问题:
mapper编写的几种方式,接口实现类继承sqlsessionDaoSupport,使用mapper扫描器,可使用org.mybatis.spring.mapper.MapperFactoryBean,还没怎么理解透,需要深入学习。
总结:
今天师弟用spring boot来做mybatis的框架,其中定义了一个mapperDao的类,里面的每一个方法对应这一个sql语句,不需要mapper.xml文件,让整个mybatis更加简洁了,可以学习一波了。
评论