11.02Mybatis Mapper映射器
Mapper映射器包含的内容
内容:
- 
一组 SQL语句
映射器的组成部分以及实现方式
映射器的组成部分:
由 Java 接口和 XML 文件(或注解)共同组成--->作用:
- 
定义参数类型 
- 
配置缓存 
- 
提供 SQL语句和动态SQL
- 
定义查询结果和 PoJo的映射关系
映射器的实现方式:
- 
xml文件方式实现,
- 
注解方式实现,使用 Configuration对象注册Mapper接口
xml实现映射器
- 
接口 
- 
xml
- 
测试类 
接口:
package com.junkingboy.mapper;
import com.junkingboy.bean.Website;
import java.util.List;
/**
 * @description:mybatis框架测试接口,该接口定义了.xml文件操作的表用到的方法
 * @data: 2021/11/2 16:35
 * @author: Lucifer
 */
public interface WebsiteMapper {
    public List<Website> selectAllWebsite();
}
xml:
同时在mybatis配置文件中需要引用这个.xml文件:
    <!--将mapper文件加入到配置文件中-->
    <mappers>
        <mapper resource="src/main/java/com/junkingboy/mapper/WebsiteMapper.xml" />
    </mappers>
    <!--
    引入 XML 文件,MyBatis 会读取 WebsiteMapper.xml 文件,生成映射器。
    -->
测试类:
    
注解实现映射器
由于注解得映射器遇到链表的语句十分不便,所以不做过多分析。
示例:
package com.junkingboy.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.junkingboy.mapper.Website;
public interface WebsiteMapper2 {
    
Mybatis映射器中可以编辑的元素
| 元素名称 | 描述 | 备注 | 
|---|---|---|
| mapper | 映射文件的根节点,只有 namescape 一个属性 | namescape 作用如下:用于区分不同的 mapper,全局唯一绑定DAO接口,即面向接口编程。当 namescape 绑定某一接口后,可以不用写该接口的实现类,MyBatis 会通过接口的完整限定名查找到对应的 mapper 配置来执行 SQL 语句。因此 namescape 的命名必须要跟接口同名。 | 
| select | 查询语句,最常用、最复杂的元素之一 | 可以自定义参数,返回结果集等 | 
| insert | 插入语句 | 执行后返回一个整数,代表插入的条数 | 
| update | 更新语句 | 执行后返回一个整数,代表更新的条数 | 
| delete | 删除语句 | 执行后返回一个整数,代表删除的条数 | 
| parameterMap | 定义参数映射关系 | 即将被删除的元素,不建议使用 | 
| sql | 允许定义一部分的 SQL,然后在各个地方引用它 | 例如,一张表列名,我们可以一次定义,在多个 SQL 语句中使用 | 
| resultMap | 用来描述数据库结果集与对象的对应关系,它是最复杂、最强大的元素 | 提供映射规则 | 
| cache | 配置给定命名空间的缓存 | - | 
| cache-ref | 其它命名空间缓存配置的引用 | - | 
Mybatis的namespace属性的要求:
- 
namescape 的命名必须跟某个 DAO 接口同名,同属于 DAO 层,因此代码结构上,映射文件与该接口应放置在同一 package 下 (如 com.junkingboy.website),并且习惯上是以 Mapper 结尾(如 WebsiteMapper.java、WebsiteMapper.xml)。
- 
不同的 mapper 文件中子元素的 id 可以相同, MyBatis通过namescape和子元素的id联合区分。接口中的方法与映射文件中的SQL语句id
    It's a lonely road!!!
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号