mybatis今天学完了,跟着读源码很困难,但也收获了一道面试题 ,先放一放,接下来开干spring了。
1.为什么表之间会有关联关系?关联关系是有方向的吗?有些什么关联?
1.在生活中,我们与四周的万物就存在关系,例如:我是学生,我就必定是学校里的一个对象,我与学校就存在关联。
2.关联关系是有方向的,站在我的角度就是 我对学校,反之,学校对我。
3.一对多关联:一个老师可以教多个学生,多个学生只有一个老师来教,站在老师方,就是一对多关联.
多对一关联:一个老师可以教多个学生,多个学生只有一个老师来教,站在学生方,就是多对一关联.
一对一关联:一个老师辅导只一个学生,一个学生只请教一个老师.学生和老师是一对一.
多对多关联:学校食堂,学生可以坐任意一个位置,任意一个位置都可以坐一个学生,学生和食堂位置就是多对多
2.什么是事务?事务用来做什么?事务有什么特性?
1.多个操作同时完成,或同时失败称为事务处理.
2.事务常出现在订单业务,用来做订单的业务的增删改
3.事务有四个特性:一致性,持久性,原子性,隔离性
在mybatis中,
<transactionManager type="JDBC"></transactionManager> type属性为:jdbc 程序员自己控制处理的提交和回滚
sqlSession = factory.openSession(true); true设置为自动提交,在增删改后不需要commit()
3.缓存有什么意义?存储在什么域?
mybatis提供两级缓存,一级缓存和二级缓存,默认为一级缓存
1.缓存的意义在于提高查询效率
查询时先到缓存里查,如果没有则查询数据库,放缓存一份,再返回客户端.下次再查询的时候直接从缓存返回,不再访问数据库.如果数据 库中发生commit()操作,则清空缓存.
2.
一级缓存使用的是SqlSession的作用域,同一个sqlSession共享一级缓存的数据.
二级缓存使用的是mapper的作用域,不同的sqlSession只要访问的同一个mapper.xml文件,则共享二级缓存作用域.
4.京东面试:注册mapper有几种方式?优先顺序是什么?
一共四种
mapper 单个的注册有三种,package 是多个注册方式
优先级:package >resource>url>mapperClass
先是判断package 是否为空,
是的话判断resource是否为空
是的话判断 url是否为空
是的话判断 mapperClass