温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mybatis读取mapper文件有哪几种方式

发布时间:2021-12-30 09:49:08 来源:亿速云 阅读:303 作者:小新 栏目:大数据

这篇文章给大家分享的是有关mybatis读取mapper文件有哪几种方式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

mybatis读取mapper文件有哪几种方式?优先级如何?

<!-- 使用相对于类路径的资源引用 --><mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/></mappers>
<!-- 使用完全限定资源定位符(URL) --><mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/></mappers>
<!-- 使用映射器接口实现类的完全限定类名 --><mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/></mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 --><mappers>
  <package name="org.mybatis.builder"/></mappers>

优先级: package>resource>url>class

mubatis的exectuor有几种方式

SimpleExecutor: 简单执行器,是MyBatis中默认使用的执行器,每执行一次update或select,就开启一个Statement对象,用完就直接关闭Statement对象(可以是Statement或者是PreparedStatment对象)

ReuseExecutor: 可重用执行器,这里的重用指的是重复使用Statement,它会在内部使用一个Map把创建的Statement都缓存起来,每次执行SQL命令的时候,都会去判断是否存在基于该SQL的Statement对象,如果存在Statement对象并且对应的connection还没有关闭的情况下就继续使用之前的Statement对象,并将其缓存起来。因为每一个SqlSession都有一个新的Executor对象,所以我们缓存在ReuseExecutor上的Statement作用域是同一个SqlSession。

BatchExecutor: 批处理执行器,用于将多个SQL一次性输出到数据库

CachingExecutor: 缓存执行器,先从缓存中查询结果,如果存在,就返回;如果不存在,再委托给Executor delegate 去数据库中取,delegate可以是上面任何一个执行器

mybatis的一级缓存是默认开启的吗?开启的话是怎么使用的?

mybatis读取mapper文件有哪几种方式

mybatis读取mapper文件有哪几种方式

因为cacheEnabled 所以一级缓存是默认开启的 。通过id  offset limit sql 四个属性来生成缓存的key

 一级缓存通过 HashMap 实现,它的键对象根据SQL的ID,参数,SQL本身,分页参数以及JDBC的参数信息构成。

 二级缓存mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

 二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。

Mybatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。  

如果缓存中有数据就不用从数据库中获取,大大提高系统性能。

不建议使用二级缓存 不同的namespace操作同一个表的话 会出现数据混乱

阿里面试题:A系统传B系统一条sql如何判断sql是正确是sql  ???

什么是orm框架? 用于实现面向对象编程语言里不同类型系统的数据之间的转换

mybatis读取mapper文件有哪几种方式

感谢各位的阅读!关于“mybatis读取mapper文件有哪几种方式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI