• 11.02Mybatis Mapper映射器


    11.02Mybatis Mapper映射器

    Mapper映射器包含的内容

    内容:

    • 一组SQL语句

    映射器的组成部分以及实现方式

    映射器的组成部分:

    Java 接口XML 文件(或注解)共同组成--->作用:

    • 定义参数类型

    • 配置缓存

    • 提供SQL语句和动态SQL

    • 定义查询结果和PoJo的映射关系

    映射器的实现方式:

    • xml文件方式实现,

    • 注解方式实现,使用Configuration对象注册Mapper接口

    xml实现映射器

    1. 接口

    2. xml

    3. 测试类

    接口:

    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:

    <?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="com.junkingboy.mapper.WebsiteMapper">
       <!--查询所有网站的信息-->
       <select id="selectAllWebsite" resultType="com.junkingboy.bean.Website">
          select * from javawebtest.website;
       </select>
    </mapper>
    <!--
    namespace 用来定义命名空间,该命名空间和定义接口的全限定名一致。
    <select> 元素表明这是一条查询语句,属性 id 用来标识这条 SQL。
    resultType 表示返回的是一个 Website 类型的值。
    -->

    同时在mybatis配置文件中需要引用这个.xml文件:

        <!--将mapper文件加入到配置文件中-->
       <mappers>
           <mapper resource="src/main/java/com/junkingboy/mapper/WebsiteMapper.xml" />
       </mappers>
       <!--
       引入 XML 文件,MyBatis 会读取 WebsiteMapper.xml 文件,生成映射器。
       -->

    测试类:

        @Test
       public void testGetInformationByInterface() {
           /*
           IO流读取配置文件
           使用SqlSessionFactory接口实现类加载配置文件
           使用SqlSession接口开启连接
           获取WebsiteMapper接口定义的方法
           执行接口当中的方法
            */
           InputStream is = null;
           try {
               is = Resources.getResourceAsStream("xml/mybatis-config.xml");
          }catch (Exception e) {
               e.printStackTrace();
          }

           /*获取配置文件*/
           SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
           /*开启连接*/
           SqlSession ss = ssf.openSession();
           /*获取WebMapper下的方法返回给接口*/
           WebsiteMapper wm = ss.getMapper(WebsiteMapper.class);

           /*使用List作为处理集处理WebsiteMapper下的方法*/
           List<Website> websiteList = wm.selectAllWebsite();
           /*循环遍历结果打印*/
           for (Website site :
                   websiteList) {
               System.out.println(site);
          }

           /*关闭资源*/
           ss.commit();
           ss.close();
      }

    注解实现映射器

    由于注解得映射器遇到链表的语句十分不便,所以不做过多分析。

    示例:

    package com.junkingboy.mapper;
    import java.util.List;
    import org.apache.ibatis.annotations.Select;
    import com.junkingboy.mapper.Website;
    public interface WebsiteMapper2 {
       @Select(value = "select * from website")
       public List<Website> selectAllWebsite();
    }

    Mybatis映射器中可以编辑的元素

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

    Mybatisnamespace属性的要求:

    • namescape 的命名必须跟某个 DAO 接口同名,同属于 DAO 层,因此代码结构上,映射文件与该接口应放置在同一 package 下(如 com.junkingboy.website),并且习惯上是以 Mapper 结尾(如 WebsiteMapper.java、WebsiteMapper.xml)

    • 不同的 mapper 文件中子元素的 id 可以相同,MyBatis 通过 namescape 和子元素的 id 联合区分。接口中的方法与映射文件中的 SQL 语句 id 应一 一对应。

    It's a lonely road!!!
  • 相关阅读:
    Python之路第二篇——Python环境与安装
    div层、fieldset分组标签、table表格的居中特效的综合运用
    在不影响系统的情况下给C盘添加磁盘空间(分区工具)
    C# windowsFroms更换皮肤的简单使用
    第二代居民身份证阅读器GTICR100(国腾)接口类调用方法
    C# 指定字符串截取方法
    C# 报表(report)和LocalReport类如何实现打印?
    RewriterURL实现二级域名的访问
    如何修改VS2012产品使用权属于某某的名称?
    OS与Internet
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15514859.html
Copyright © 2020-2023  润新知