映射器是MyBatis最强大的工具,也是我们使用MyBatis时用得最多的工具,因此熟练掌握它十分必要。MyBatis是针对映射器构造的SQL构建的轻量级框架,并且通过配置生成对应的JavaBean返回给调用者,而这些配置主要便是映射器,在MyBatis中你可以根据情况定义动态SQL来满足不同场景的需要,它比其他框架灵活得多。MyBatis还支持自动绑定JavaBean,我们只要让SQL返回的字段名和JavaBean的属性名保持一致即可(获赠采用驼峰式命名),便可以省掉这些繁琐的映射配置。
今天主要围绕这么几个方面来讲?
1.映射器的主要元素;
2.select元素
3.insert元素
4.update元素和delete元素
5.参数
6.sql元素
7.resultMap结果映射
8.缓存cache
一、映射器的主要元素
关于映射器的主要元素,我用两张图概况。
图一:

图一除了parameterMap之外基本上就不用,其他的都用。
图二:

resultMap是我用的比较多的,至于cache或者cache-ref用的着实不是很多。一般我们在spring和ehcache整合就可以达到缓存目的。当然了,有的时候觉得每次都通过ehcache在对应的方法上配置缓存注解显得麻烦,就可以通过cache的形式。
二、select元素
select元素是我们最常用也是功能最强大的SQL语言。select元素帮助我们从数据库中读出数据,组装数据给业务人员。执行select语句前,我们需要定义参数,它可以是一个简单的参数类型,例如int、float、String,同时也可以是一个复杂参数类型,例如Map或者JavaBean等,这些都是MyBatis接受的参数类型。执行SQL后,MyBatis也提供了强大的映射规则,甚至是自动映射来帮助我们把返回的结果绑定到JavaBean中。
关于select元素的配置,我用如下的图来表示:
图一:

图二:

图三:

关于select细节的东西,我不想说太多,对于初学者而言,说的太多,显得重点不突出,对于有基础的朋友们,说的太多,显得繁琐。
以下说这个常见问题?
1.关于resultType和resultMap
resultType是针对当数据表的字段名与JavaBean中属性名一致时,我们可以使用resultType。如果不一致的话,我们就使用resultMap。因为如果在数据表的字段名与JavaBean的属性不一致的前提下你还使用resultType,那么你查询的数据应该是为Null。
2.关于多个参数传递问题
如果你的数据访问层方法中的参数大于四个以上,建议使用对象来传输数据。
如果是参数列表中的参数与xml中的sql查询条件的字段不一致,可以使用@Parm注解自定义。
例如:

三、insert元素
insert元素,相对于select元素而言要简单许多。MyBatis会在执行插入之后返回一个整数,以表示你进行操作后插入的记录数。
insert元素配置详解
用一张图来表示,如下图所示:

insert 需要注意的是参数列表中的参数与插入的数据的列名要对上,同时还有就是数据表定义的主键非空或自增及其其他字段一些特殊的定义,因为同update一样,往往因为数据表的定义导致出现小问题。



