上面的两篇文章,分别是MyBatis的入门小程序和MyBatis的配置XML解析,有需要的可以先去看看这两篇文章,本篇文章,会来讲解SQL映射XML文件的写法以及如何使用。
MyBatis真正的力量在于其映射语句。这里应该是奇迹发生的地方。SQL映射的XML文件是相当简单的。如果与功能对等的JDBC相比较,你会发现它减少了大约95%的代码量。MyBatis的构建应该聚焦于SQL的XML文件的构建,使得其远离普通的方式。
SQL的映射文件有很少几个顶级元素(按照他们应该被定义的顺序)
--cache:配置给定命名空间的缓存;
--cache-ref:从其他命名空间引入缓存配置;
--resultMap:最复杂,也是最优作用的元素,用来描述如何从数据库结果集中加载你的对象,这个比较复杂,需要花点时间理解,理解了使用起来很是方便;
--sql:可以重用的SQL块,也可以被其他语句引用;
--insert:映射插入语句;
--update:映射更新语句;
--delete:映射删除语句;
--select:映射查询语句
下面将以语句本身开始描述每个元素的细节。
select
查询语句在使用MyBatis时候最常用的元素之一,查询算是在数据库中最常见的操作。
这个语句被称为findById(id="findById"),后面使用的时候,通过namespace加上id来确定该条语句,因此每一个id都是唯一的,使用了int类型的参数(parameterType="int"),并返回一个User的类型的对象(resultType="com.wpl.mybatisdemo.User")其中上面是参数类的全完限定名根据上面文章应该可以使用别名,这样以后再使用到User时候方便很多。
上面需要注意的就是resultType和resultMap不能够同时使用,具体resultMap是如何使用的后面会详细的介绍。
insert,update,delete这三个在实现的时候非常的相似,这三个都没有resultType或是resultMap返回结果的设置,都只有输入参数的设置。
下面是insert,update和delete的使用语句示例
insert into Author (id,username,password,email,bio)
values (#{id},#{username},#{password},#{email},#{bio})
update Author set
username = #{username},
password = #{password},
email = #{email},
bio = #{bio}
where id = #{id}
delete from Author where id = #{id}
这个元素是可以被用来定义可以重用的SQL代码段,这样在重复使用某一个代码段的时候可以考虑使用sql这个属性
id,username,password
上述的代码段就可以包含其他语句中,例如
这是一个很重要也是一个比较难理解的一个属性吧,使用的很多,需要好好理解一下。
上面是数据库中数据,有三个字段,理论上我们在构建Javabean的时候应该要和这些字段名一样定义属性。但是如果没有这时候可以使用到resultMap这个属性。
上面是Javabean。
这样就可以不用更改数据库的列名或是Javabean属性名,依然可以实现对数据库的查询。其中在