【Mybatis】批量映射优化 分页插件PageHelper 逆向工程插件MybatisX

news2024/11/16 9:34:51

文章目录

  • 一、Mapper批量映射优化
  • 二、插件和分页插件PageHelper
    • 2.1 插件机制和PageHelper插件介绍
    • 2.2 PageHelper插件使用
  • 三、逆向工程和MybatisX插件
    • 3.1 ORM思维介绍
    • 3.2 逆向工程
    • 3.3 逆向工程插件MyBatisX使用
  • 总结


一、Mapper批量映射优化

  • 需求:
    Mapper 配置文件很多时,在全局配置文件中一个一个注册太麻烦

  • 配置方式
    Mybatis 允许在指定 Mapper 映射文件时,只指定其所在的包:

    <mappers>
        <package name="com.wake.mapper"/>
    </mappers>

此时这个包下的所有 Mapper 配置文件将被自动加载、注册

  • 资源创建要求
      1. 要求 mapper.xml 文件 和 mapper接口 的命名必须相同
      1. 最终打包后的位置要一致,都需要在指定的包地址下
      • resources 文件夹创建对应的文件夹结构 (推荐)
      • ② xml文件创建在接口所在的包内,在添加pom.xml 配置(麻烦不推荐)
    • 注意:resources 下直接创建多层文件夹 使用 / 分割,不使用.

实例:
1
编译后:
1

二、插件和分页插件PageHelper

2.1 插件机制和PageHelper插件介绍

插件可以在用于语句执行过程中进行拦截,并允许通过自定义处理程序来拦截和修改 SQL 语句、映射语句的结果等。
1

Mybatis-PageHelper 使用文档 Github

使用插件,我们就可以不用自己计算 limit 分页
1

2.2 PageHelper插件使用

  • pom.xml 导入依赖
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>
  • mybatis-config.xml 配置分页插件
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <property name="helperDialect" value="mysql"/>
    </plugin>
</plugins>

其中,com.github.pagehelper.PageInterceptor 是 PageHelper 插件的名称,dialect 属性用于指定数据库类型(支持多种数据库)

从标签 <configuration> 中确定 <plugins> 放在哪个位置
1

  • 插件使用
    在查询方法中使用分页:

  • xml

<!--    List<Employee> queryAll();      -->
<mapper namespace="com.wake.mapper.EmployeeMapper">
    <select id="queryAll" resultType="employee">
        <!--  正常编写,结尾不加分号;  -->
        select * from t_emp where emp_salary > 100
    </select>
</mapper>
    @Test
    public void test(){
        EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
        // 调用之前 , 先设置分页数据(当前是第几页,每页显示多少条数据)
        PageHelper.startPage(1,2);
        // 注意不能将两条查询装到一个分页区
        List<Employee> employeeList = employeeMapper.queryAll();

        //将查询的数据封装到一个PageInfo的分页实体类(一共多少页,一共多少条等)
        PageInfo<Employee> employeePageInfo = new PageInfo<>(employeeList);
        // 获取当前页数据
        List<Employee> list = employeePageInfo.getList();
        System.out.println("list: "+list);
        // 获取总页数
        int pages = employeePageInfo.getPages();
        System.out.println("pages: " + pages);
        // 获取总条数
        long total = employeePageInfo.getTotal();
        System.out.println("total: " + total);
        int pageNum = employeePageInfo.getPageNum();
        int pageSize = employeePageInfo.getPageSize();
        System.out.println("当前第:"+pageNum+" 页,每页显示:"+pageSize+" 条");
    }

1

三、逆向工程和MybatisX插件

3.1 ORM思维介绍

ORM(Object-Relational Mapping,对象-关系映射)是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。
让我们可以使用面向对象思维进行数据库操作。
1
期望半自动orm框架,也能实现单表的crud自动生成
使用逆向工程:半自动orm -》全自动orm

3.2 逆向工程

  • MyBatis 的逆向工程是一种自动化生成持久层代码和映射文件的工具,
  • 它可以根据数据库表结构和设置的参数生成对应的实体类、Mapper.xml 文件、Mapper 接口等代码文件

注意:逆向工程只能生成单表crud的操作,多表查询依然需要我们自己编写!

3.3 逆向工程插件MyBatisX使用

MyBatisX 是一个 MyBatis 的代码生成插件,可以通过简单的配置和操作快速生成 MyBatis Mapper、pojo 类和 Mapper.xml 文件。

  • 安装插件:
    1

  • IDEA中连接数据库

  • 选择需要创建CRUD的表
    1

  • 填写信息
    在这里插入图片描述
    1

  • 结果显示
    1


总结

核心点掌握目标
mybatis基础使用流程, 参数输入,#{} ${},参数输出
mybatis多表实体类设计,resultMap多表结果映射
mybatis动态语句Mybatis动态语句概念, where , if , foreach标签
mybatis扩展Mapper批量处理,分页插件,逆向工程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高精准无人机激光雷达标定板

无人机激光雷达标定板是一种用于校准无人机激光雷达系统的工具&#xff0c;它可以帮助无人机获取更准确、更可靠的数据&#xff0c;从而提高无人机的导航精度和自主控制能力。本文将从无人机激光雷达标定板的基本概念、作用、应用领域、市场现状和发展趋势等方面进行介绍。 一…

LeetCode 1976.到达目的地的方案数:单源最短路的Dijkstra算法

【LetMeFly】1976.到达目的地的方案数&#xff1a;单源最短路的Dijkstra算法 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/ 你在一个城市里&#xff0c;城市由 n 个路口组成&#xff0c;路口编号为 0 到 n - 1 &#xff…

【音视频开发好书推荐1】《RTC程序设计:实时音视频权威指南》

1、WebRTC概述 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个由Google发起的实时音视频通讯C开源库&#xff0c;其提供了音视频采集、编码、网络传输&#xff0c;解码显示等一整套音视频解决方案&#xff0c;我们可以通过该开源库快速地构建出一个音视频通…

12-Linux部署Zookeeper集群

Linux部署Zookeeper集群 简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。…

设计模式:六大原则 ③

一、六大设计原则 &#x1f360; 开闭原则 (Open Close Principle) &#x1f48c; 对扩展开放&#xff0c;对修改关闭。在程序需要进行拓展的时候&#xff0c;不能去修改原有的代码&#xff0c;实现一个热插拔的效果。简言之&#xff0c;是为了使程序的扩展性好&#xff0c;易…

4步教你完成一篇让人挑不出毛病的产品需求文档!

“需求”这个词是产品经理工作中的常客&#xff0c;产品需求文档也贯穿于整个产品经理的日常工作中&#xff0c;本周小编将通过什么是产品需求文档&#xff0c;产品需求文档的作用、如何写好产品需求文档等方面分享如何写出一篇让你挑不出毛病的PRD&#xff0c;让需求文档助力产…

光分路器概述

光分路器主要有两种 技术&#xff1a; ㈠平面波导型光分路器(PLC Splitter) PLC分路器的封装是指将平面波导分路器上的各个导光通路&#xff08;即波导通路&#xff09;与光纤阵列中的光纤一一对准&#xff0c;然后用特定的胶&#xff08;如环氧胶&#xff09;将其粘合在一起…

计算机系统中的文件系统梳理

看之前&#xff0c;大家动动小手点个关注&#xff0c;谢谢。 原文地址&#xff1a;计算机系统中的文件系统梳理 - Pleasure的博客 下面是正文内容&#xff1a; 前言 这是一篇笔记 我之所以要选择这个话题&#xff0c;是因为前几天在对TF卡进行格式化的时候遇到了问题。有些专…

每日一练 | 华为认证真题练习Day192

1、下面是路由器RTB的部分输出信息&#xff0c;关于输出信息描迷错误的是: A. 接口上动态加入的组播组个数是1。 B. 加入的组播组地址是225.1.1.2 C. DISPLAY IGMP GROUP命令用来查看IGMP组播组信息&#xff0c;包括通过成员报告动态加入的组播组和通过命令行静态加入的组播组…

抖音视频下载软件|视频批量采集工具

便捷操作&#xff0c;高效采集 在快节奏的数字化时代&#xff0c;我们的视频下载软件提供了简单便捷的操作流程&#xff0c;让用户能够高效地采集所需视频内容。用户只需输入关键词并点击开始抓取&#xff0c;系统会自动搜索指定关键词下的抖音视频数据&#xff0c;并将待解析视…

2024年软考考试安排和报名时间出来了!有重大变化!

软考办2024年软考考试安排终于发布了!变化很大!信息系统项目管理师上半年考、系统集成项目管理工程师下半年考。很多科目一年只考一次了! 温馨提示&#xff1a; 1、目前这个文件&#xff0c;软考办官网还未发布&#xff0c;但是陕西软考办官方已经发布了2024年考试安排&…

kafka查看消息两种方式(命令行和软件)+另附发送消息方式

1、命令行方式 ①找到kafka安装文件夹 ②执行命令 #指定offset为指定时间作为消息起始位置 kafka-consumer-groups.sh \ --bootstrap-server 20.2.246.116:9092 \ --group group_1 \ --topic lanxin_qiao \ --reset-offsets \ --to-datetime 2023-07-19T01:00:00.000 \ -exe…

有没有想过找个编程的贴身帮手?一步一步引入编程路上的副驾驶--copilot

辅助编程&#xff0c;或者说智能编程&#xff0c;这个概念不是这两年才提出&#xff0c;但比较成型的产品就在这几年&#xff0c;这里有一款智能编程的软件叫做copilot&#xff0c;从软件的名字我们知道&#xff0c;他貌似定位还蛮准确的&#xff0c;意思是你编程路上的副驾驶&…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…

《RabbitMQ实战指南》读书笔记

第一章 RabbitMQ简介 1.1 什么是消息中间件 消息&#xff08;message&#xff09;是指在应用间传递的数据。 消息队列中间件&#xff08;Message Queue Middleware&#xff0c;简称MQ&#xff09;&#xff0c;是指提供平台无关的、高效可靠的消息传递机制的中间件。 MQ通常又…

生成哈夫曼树 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定长度为 n 的无序的数字数组&#xff0c;每个数字代表二叉树的叶子节点的权值&#xff0c;数字数组的值均大于等于 1 。 请完成一个函数&#xff0c;根据输入…

解决JitPack中编译成功但是无aar文件的情况

情况(编译后无aar文件) 上传仓库后&#xff0c;在JitPack中编译成功后的截图 解决方法 通过上图可发现代码已经编译通过&#xff0c;但是在Files中却没有aar文件的生成 解决方法是添加配置&#xff0c;上代码 // publishing 用于定义项目的发布相关配置 publishing {// 配置…

2024全网最全Excel函数与公式应用

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 Excel是一款广泛应用于商业、教育和个人…

【教程】APP开发后如何上架?

摘要 本文介绍了移动应用程序&#xff08;APP&#xff09;开发后如何上架的步骤和注意事项。内容包括选择合适的应用商店、遵循应用商店的规则和政策、准备上架所需材料、创建开发者账号、提交APP并等待审核等环节&#xff0c;以及上架成功后的推广和维护工作。 引言 移动应…

MySQL:索引的优化方法

索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;形象的说就是索引是数据的目录。 索引创建的时机&#xff1a; 索引并不是越多越好的&#xff0c;虽然他再查询时会提高效率&#xff0c;但是保存索引和维护索引也需要一定的空间和时间成本的。 不创建索引&#xff1a…