最全MyBatis中XML映射文件(Mapper)标签分析

前言

MyBatis的强大之处就在于它的映射器文件,而这也正是MyBatis的魔力所在,对于任何MyBatis的使用者来说,MyBatis的映射文件是必须要掌握的。

Mapper文件标签

Mapper中一个提供了9个顶层标签,除了1个已经过期的我们不需要去了解,另外8个都是必须要掌握的,只要熟练掌握了标签的使用,使用MyBatis才能如鱼得水。接下来我们就一个个来分析一下这些标签的使用。

select

select用来映射查询语句,是我们使用最多的一种标签,也是最复杂的一种标签。比如下面就是一个简单的select标签的使用:

select标签内,提供了一些二级标签,下面就列举出了全部的二级标签:


        select  from lw_user_address
    

    
        id,address
    

如果说我们现在需要定义一个关联语句,列来自于两张不同的表,又该如何实现呢?这时候就可以通过制定参数的方式来实现了:

 

    
        ${prefix1}.user_id,${prefix2}.id
    

这时候打印出来的sql语句如下:

select u.user_id,j.id from lw_user u inner join lw_user_job j on u.user_id=j.user_id

cache

MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。但是默认情况下只开启了一级缓存,即局部的session缓存,如果想要开启二级缓存。那么就需要使用到cache标签

PS:这些属性都是有默认值的,所以一般情况下可以直接使用:

关于默认值是多少,请继续往下看。。。。

type

如果说我们自己自定义了缓存,那么这里可以配置自定义缓存类的全限定名或者别名,如果没有自定义缓存,则不需要配置type属性。

关于缓存相关原理以及如何自定义缓存,后面会有一篇文章专门介绍缓存,本文主要还是介绍一下标签的使用,不会过多涉及底层原理性问题。

eviction

缓存回收策略,MyBatis中more提供了以下策略可以选择:

flushInterval

刷新间隔时间(单位是毫秒)。可以被设置为任意的正整数。默认情况是不设置,也就是不会主动刷新缓存(只有等待sql被执行的时候才会被刷新)

readOnly

是否只读。属性可以被设置为 true 或 false。如果设置为true,那么只读的缓存会给所有调用者返回缓存对象的相同示例,因为缓存无法被修改。这在一定程度上可以提升性能。
默认是false,也就是可以修改缓存,那么当读取缓存的时候会通过序列化的方式返回缓存对象的拷贝,虽然这么做会慢一点,但是安全,因此默认才会设置为false,允许修改缓存。

size

引用数目。通俗点就是可以缓存的个数,默认值是1024。超过了设置值的时候,就会采用上面的算法进行覆盖

cache-ref

假如我们在其中一个Mapper中已经配置好了缓存,然后在其他Mapper想要共用,那么在这样的情况下就可以使用cache-ref元素来引用另外一个缓存,从而不需要重复配置。如:

这样当前Mapper就可以共用UserMapper文件中的相同缓存了。

resultMap

上面介绍select标签的时候提到,select标签的返回结果可以使用resultMap,但是一旦我们使用了resultMap时,我们就必须要自己定义一个resultMap。
如下,我们定义了一个resultMap:

 
        
        
    

这时候select语句就可以引用:

可以看到,resultMap可以自由定义,所以可以接受非常复杂的查询返回结果集,resultMap的具体使用,可以点击这里

parameterMap

这个参数已过期,不再讨论,可以忘掉有这个参数

总结

本文主要介绍了MyBatis中映射文件Mapper.xml文件一些标签的使用,可以算是最全MyBatis中XML映射文件标签分析了,当然这其中并不涉及到如何完成动态sql语句的拼写。动态sql也是MyBatis的一个非常重要的功能点,但是综合考虑如果单纯通过一篇文章来书写sql语句动态标签的使用,会显得非常枯燥,所以动态sql的映射就不准备通过单独的文章来书写了,虽然如此,但是依然会通过一些相关知识点来介绍动态标签的使用,比如下一篇介绍MyBatis中一对多和多对多的结果集如何返回时,就会涉及到一些标签,如where,if,set,choose等,后面还会介绍批量操作等,也会涉及到foreach等一些标签的使用。

展开阅读全文

页面更新:2024-06-21

标签:标签   文件   游标   别名   示例   缓存   语句   属性   这时候   定义   对象   参数   类型   数据库   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top