MyBatis入门-中
发布日期:2022-02-10 11:36:55 浏览次数:24 分类:技术文章

本文共 4755 字,大约阅读时间需要 15 分钟。

MyBatis接口代理方式实现Dao层

  • 接口代理方式-实现规则

    • 传统方式实现 Dao 层,我们既要写接口,还要写实现类。而 MyBatis 框架可以帮助我们省略编写 Dao 层接口实现类的步骤。我们只需要编写接口,由 MyBatis 框架根据接口的定义来创建该接口的动态代理对象。
    • 实现规则
      • 映射配置文件中的名称空间必须和 Dao 层接口的全类名相同。
      • 映射配置文件中的增删改查标签的 id 属性必须和 Dao 层接口的方法名相同。
      • 映射配置文件中的增删改查标签的 parameterType 属性必须和 Dao 层接口方法的参数相同。
      • 映射配置文件中的增删改查标签的 resultType 属性必须和 Dao 层接口方法的返回值相同。
    • 接口代理方式-代码实现
      • 删除 mapper 层接口的实现类。
      • 修改映射配置文件
      • 修改 service 层接口的实现类,采用接口代理方式实现功能。
  • 核心配置文件(MyBatisConfig.xml)

  • 映射配置文件(StudentMapper.xml)

    SELECT * FROM student
  • mapper层(StudentMapper)

    package com.xxxxxxx.mapper;/*    持久层接口 */public interface StudentMapper {         //查询全部    public abstract List
    selectAll(); //省略其他方法,}

    小结

    • 接口代理方式可以让我们只编写接口即可,而实现类对象由 MyBatis 生成
    • 实现规则(如上 实现规则)
    • 获取动态代理对象
      • SqlSession 功能类中的 getMapper() 方法

MyBatis 映射配置文件 – 动态 SQL

动态 SQL 介绍

  • MyBatis 映射配置文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL 就是 动态变化的,此时简单的 SQL 就不能满足要求了。

  • 多条件查询

    在这里插入图片描述

  • 动态SQL标签

    • :条件判断标签
    • :循环遍历标签
  • 标签

    • :条件标签。如果有动态条件,则使用该标签代替 where 关键字。
    • :条件判断标签。
      *在这里插入图片描述
  • :循环遍历标签

    • :循环遍历标签。适用于多个参数或者的关系。
      • 在这里插入图片描述
    • 属性
      • collection:参数容器类型,(list-集合,array-数组)。
      • open:开始的 SQL 语句。
      • close:结束的 SQL 语句。
      • item:参数变量名。
      • separator:分隔符。
  • SQL片段抽取

    • :条件标签。如果有动态条件,则使用该标签代替 where 关键字。
    • :条件判断标签。
      *在这里插入图片描述
  • 举例

    SELECT * FROM student

MyBatis 核心配置文件 – 分页插件

  • 分页插件介绍

    • 在企业级开发中,分页也是一种常见的技术。而目前使用的 MyBatis 是不带分页功能的,如果想实现分页的功能,需要我们手动编写 LIMIT 语句。但是不同的数据库实现分页的 SQL 语句也是不同的。这个时候就可以借助分页插件来帮助我们实现分页功能。
    • PageHelper:第三方分页助手。将复杂的分页操作进行封装,从而让分页功能变得非常简单。
  • 分页插件实现步骤

    • 导入jar包

    • 在核心配置文件中集成分页助手插件


  • 分页插件相关

    • 分页:可以将很多条结果进行分页显示。
    • 分页插件 jar 包:pagehelper-5.1.10.jar jsqlparser-3.1.jar
    • :集成插件标签。
    • 分页助手相关 API
      • PageHelper:分页助手功能类。
      • startPage():设置分页参数
      • PageInfo:分页相关参数功能类。
      • getTotal():获取总条数
      • getPages():获取总页数
      • getPageNum():获取当前页
      • getPageSize():获取每页显示条数
      • getPrePage():获取上一页
      • getNextPage():获取下一页
      • isIsFirstPage():获取是否是第一页
      • isIsLastPage():获取是否是最后一页

MyBatis 多表操作

多表模型

  • 在实际开发中,随着业务难度的加深,肯定是需要多表操作的

  • 多表模型分类

    • 一对一:在任意一方建立外键,关联对方的主键。
    • 一对多:在多的一方建立外键,关联一的一方的主键。
    • 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键。
  • 一对一

    • 一对一模型:例如人和身份证,一个人只有一个身份证。
    • :配置字段和对象属性的映射关系标签。
      • id 属性:唯一标识
      • type 属性:实体对象类型
    • :配置主键映射关系标签。
    • :配置非主键映射关系标签。
    • column 属性:表中字段名称
    • property 属性: 实体对象变量名称
    • :配置被包含对象的映射关系标签。
      • property 属性:被包含对象的变量名
      • javaType 属性:被包含对象的数据类型
  • 一对多

    • 一对多模型:班级和学生,一个班级可以有多个学生
    • :配置字段和对象属性的映射关系标签。
      • id 属性:唯一标识
      • type 属性:实体对象类型
    • :配置主键映射关系标签。
    • :配置非主键映射关系标签
      • column 属性:表中字段名称
      • property 属性: 实体对象变量名称
    • :配置被包含集合对象的映射关系标签。
      • property 属性:被包含集合对象的变量名
      • ofType 属性:集合中保存的对象数据类型
  • 多对多

    • 多对多模型:学生和课程,一个学生可以选择多门课程、一个课程也可以被多个学生所选择。
    • :配置字段和对象属性的映射关系标签。

      • id 属性:唯一标识
      • type 属性:实体对象类型
    • :配置主键映射关系标签

    • :配置非主键映射关系标签。

      • column 属性:表中字段名
      • property 属性: 实体对象变量名称
    • :配置被包含集合对象的映射关系标签。

      • property 属性:被包含集合对象的变量名

      • ofType 属性:集合中保存的对象数据类型

sc

WHERE sc.sid=s.id AND sc.cid=c.id

* 
:配置字段和对象属性的映射关系标签。 * id 属性:唯一标识 * type 属性:实体对象类型*
:配置主键映射关系标签*
:配置非主键映射关系标签。 * column 属性:表中字段名 * property 属性: 实体对象变量名称 *
:配置被包含集合对象的映射关系标签。 * property 属性:被包含集合对象的变量名 * ofType 属性:集合中保存的对象数据类型 ​

转载地址:https://blog.csdn.net/drug1910951117/article/details/106887634 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:MyBatis入门-上
下一篇:jstl 的<c:if>标签没有else的解决办法

发表评论

最新留言

表示我来过!
[***.240.166.169]2023年06月04日 13时32分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章