java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis Mapper映射器

MyBatis Mapper映射器的具体用法

作者:小日子呀

映射器是MyBatis中最重要的文件,映射器由Java接口和XML文件共同组成,具有一定的参考价值,感兴趣的可以了解一下

映射器是 MyBatis 中最重要的文件,文件中包含一组 SQL 语句(例如查询、添加、删除、修改),这些语句称为映射语句或映射 SQL 语句。

映射器由 Java 接口和 XML 文件(或注解)共同组成,它的作用如下。

映射器有以下两种实现方式。

如果 SQL 语句存在动态 SQL 或者比较复杂,使用注解写在 Java 文件里可读性差,且增加了维护的成本。所以一般建议使用 XML 文件配置的方式,避免重复编写 SQL 语句。

XML实现映射器

XML 定义映射器分为两个部分:接口和XML。下面先定义接口 WebsiteMapper

public interface WebsiteMapper {
    public List<Website> selectAllWebsite();
}

WebsiteMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.cc.mapper.WebsiteMapper">
    <!-- 查询所有网站信息 -->
    <select id="selectAllWebsite"
        resultType="net.cc.po.Website">
        select * from website
    </select>
</mapper>

下面对上述 XML 文件进行讲解。

在 MyBatis 配置文件中添加以下代码。

<mapper resource="net/cc/mapper/WebsiteMapper.xml" />

该语句用来引入 XML 文件,MyBatis 会读取 WebsiteMapper.xml 文件,生成映射器。

注解实现映射器

使用注解的方式实现映射器,只需要在接口中使用 Java 注解,注入 SQL 即可。如下所示。

public interface WebsiteMapper2 {
    @Select(value = "select * from website")
    public List<Website> selectAllWebsite();
}

 这里我们使用了 @Select 注解,并且注入了和 XML 中相同的 select 语句。

如果使用注解和 XML 文件两种方式同时定义,那么 XML 方式将覆盖掉注解方式。

虽然这里注解的方式看起来比 XML 简单,但是现实中我们遇到的 SQL 会比该例子复杂得多。如果 SQL 语句中有多个表的关联、多个查询条件、级联、条件分支等,显然这条 SQL 就会复杂的多,所以并不建议读者使用这种方式,此外,XML 可以相互引入,而注解是不可以的,所以在一些比较复杂的场景下,使用 XML 方式会更加灵活和方便。因此大部分的企业都以 XML 为主,本教程也会保持一致,以 XML 方式来创建映射器。当然在一些简单的表和应用中使用注解方式也会比较简单。

MyBatis 映射器的主要元素

下面介绍在映射器中可以定义哪些元素,以及它们的作用。

元素名称描述备注
mapper映射文件的根节点,只有 namescape 一个属性namescape 作用如下:
  • 用于区分不同的 mapper,全局唯一
  • 绑定DAO接口,即面向接口编程。当 namescape 绑定某一接口后,可以不用写该接口的实现类,MyBatis 会通过接口的完整限定名查找到对应的 mapper 配置来执行 SQL 语句。因此 namescape 的命名必须要跟接口同名。
select查询语句,最常用、最复杂的元素之一可以自定义参数,返回结果集等
insert插入语句执行后返回一个整数,代表插入的条数
update更新语句执行后返回一个整数,代表更新的条数
delete删除语句执行后返回一个整数,代表删除的条数
parameterMap定义参数映射关系即将被删除的元素,不建议使用
sql允许定义一部分的 SQL,然后在各个地方引用它例如,一张表列名,我们可以一次定义,在多个 SQL 语句中使用
resultMap用来描述数据库结果集与对象的对应关系,它是最复杂、最强大的元素提供映射规则
cache配置给定命名空间的缓存-
cache-ref其它命名空间缓存配置的引用-

关于 MyBatis 的 SQL 映射文件中的 mapper 元素的 namescape 属性有如下要求。

到此这篇关于MyBatis Mapper映射器的具体用法的文章就介绍到这了,更多相关MyBatis Mapper映射器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文