浅析Mybatis Plus和Mybatis的区别

下面就来详细讲解 “浅析Mybatis Plus和Mybatis的区别”的完整攻略。

什么是Mybatis?

Mybatis 是一款基于 Java 的持久层框架,它封装了 JDBC 操作,简化了 JDBC 操作繁琐的过程,使得开发者能够将精力集中到 SQL 的编写上面。

Mybatis 的特点:

  • 操作简单、方便,对开发者友好
  • 灵活度高,可以定制化 SQL
  • 提供映射文件直观展示 SQL
  • SqlSession 的生命周期短,避免了多线程并发满足专一性等问题

但是,Mybatis 存在以下一些缺点:

  • SQL 代码需要手写,有一定的开发成本
  • 分页、乐观锁、缓存等功能需要手动实现
  • 自动更新表结构需要手写 SQL 脚本

为了解决这些缺点,Mybatis Plus 应运而生。

什么是Mybatis Plus?

Mybatis Plus 是 Mybatis 的增强工具,它封装了 Mybatis 的一些通用的增删改查功能和一些常用的操作,可以使开发者更加便捷地使用 Mybatis 进行数据库操作,将开发效率大大提高。

Mybatis Plus 的优点:

  • 提供了许多乐观锁、分页、跨库等方便的功能
  • 部分 SQL 自动生成,减轻了开发压力
  • 同步 JPA 规范,提供了强类型支持
  • 推广了 ActiveRecord 的编程风格

下面我们通过两条示例来进一步理解 Mybatis Plus 和 Mybatis 的区别。

示例一

在 Mybatis 中,更新数据的代码通常是这样的:

public void update(User user) {
    SqlSession session = sqlSessionFactory().openSession();
    try {
        session.update("UserMapper.update", user);
        session.commit();
    } finally {
        session.close();
    }
}

而在 Mybatis Plus 中,只需实现 IUpdate 接口即可:

public void update(User user) {
    userMapper.updateById(user);
}

在 Mybatis 中,需要使用 xml 来实现动态 SQL,而在 Mybatis Plus 中,可以用 Lambda 表达式来实现简单的动态 SQL,例如:

public void selectByName(String name) {
    List<User> users = userMapper.selectList(new QueryWrapper<User>().lambda().eq(User::getName, name));
}

示例二

在 Mybatis 中,实现分页功能需要手动添加分页查询语句,并且手动计算分页信息,代码如下:

public void selectByPage(int pageNum, int pageSize) {
    SqlSession session = sqlSessionFactory().openSession();
    List<User> users = new ArrayList<>();
    try {
        int startIndex = (pageNum - 1) * pageSize;
        users = session.selectList("UserMapper.selectByPage", null, new RowBounds(startIndex, pageSize));
    } finally {
        session.close();
    }
}

而在 Mybatis Plus 中,只需传入分页信息即可:

public void selectByPage(int pageNum, int pageSize) {
    Page<User> page = new Page<>(pageNum, pageSize);
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    IPage<User> pageResult = userMapper.selectPage(page, wrapper);
    List<User> users = pageResult.getRecords();
}

总结

两者的区别:

  • Mybatis Plus 提供了诸多常用功能,默认实现了 ID 策略、通用 CRUD 操作、自动分页等,大大加快了开发效率。
  • 使用 Mybatis Plus 可以按照 JPA 的编程规范进行开发,强类型的支持能有效避免 SQL 注入等安全问题。
  • Mybatis Plus 的 Lambda 表达式能够实现 SQL 动态构造,使用起来非常方便。

综上所述,推荐在选择持久层框架时优先考虑 Mybatis Plus,本身的使用体验和开发效率都要比 Mybatis 更佳,为 Java 的开发带来了很大的便利。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析Mybatis Plus和Mybatis的区别 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JAVA IDEA入门使用手册(新手小白必备)

    JAVA IDEA入门使用手册(新手小白必备) 简介 本手册旨在帮助初学者快速入门Java IDEA开发工具,逐步了解Java开发流程、常用操作和调试技巧,从而更好地开发出高质量的Java应用程序。 安装 首先需要下载Java IDEA软件,可以从官网下载最新版本:https://www.jetbrains.com/idea/download/ 安装过程比较…

    Java 2023年5月23日
    00
  • Java MyBatis之Mapper代理详解

    Java MyBatis之Mapper代理详解 在MyBatis中,Mapper代理是一种方便且易于使用的方式来执行数据库操作。Mapper代理充当了DAO层与MyBatis框架之间的接口,从而将SQL语句执行的逻辑与业务逻辑分开。 1. Mapper代理的创建 Mapper代理是通过MyBatis框架自动生成的。MyBatis通过读取我们配置的Mapper…

    Java 2023年5月20日
    00
  • java 字符串截取的三种方法(推荐)

    下面我会详细讲解Java字符串截取的三种方法(推荐)。 Java字符串截取的三种方法(推荐) 在Java中,字符串是一个很常见的数据类型。而在字符串的处理中,字符串截取也是很常见的需求之一。本攻略主要介绍Java字符串截取的三种方法(推荐)。 方法一:substring() 方法 substring() 方法是一种常见的字符串截取方法。它可以根据给定的起始和…

    Java 2023年5月26日
    00
  • JQuery标签页效果实例详解

    接下来我将为你详细讲解“JQuery标签页效果实例详解”的完整攻略。 概述 本文将介绍如何使用 jQuery 实现一个标签页效果。标签页是一种常见的网页布局方式,用户可以通过点击标签来切换不同的内容。在本文中,我们将使用 jQuery 和 CSS 实现一个简单的标签页效果。 实现步骤 创建 HTML 结构 首先需要创建一个 HTML 结构,包含多个标签和对应…

    Java 2023年6月15日
    00
  • SpringBoot+MyBatis实现登录案例

    下面我就详细讲解一下“SpringBoot+MyBatis实现登录案例”的完整攻略。 准备工作 首先,我们需要准备好以下工具和环境: Java开发环境(推荐使用Java 8或以上版本) Maven项目管理工具 IDEA或Eclipse集成开发环境 MySQL数据库 创建Maven工程 使用IDEA或Eclipse创建一个Maven工程,项目结构如下: pro…

    Java 2023年5月20日
    00
  • mybatis使用foreach遍历list集合或者array数组方式

    下面我将详细讲解使用MyBatis的foreach遍历list集合或者array数组的方法。 1. foreach遍历list集合 1.1 准备工作 首先,我们需要在mapper接口中定义一个方法,参数为List类型,如下所示: public interface UserMapper { List<User> getUsersByIds(List…

    Java 2023年5月26日
    00
  • Sping Security前后端分离两种实战方案

    下面我将详细讲解“Spring Security前后端分离两种实战方案”的完整攻略。 简介 Spring Security 是一款开源的认证和授权框架,可以实现对系统的安全性保护。在前后端分离的架构中,Spring Security 的实现需要特别注意。本文将从两个方面介绍 Spring Security 的前后端分离实现方案。 方案一:基于 Token 的…

    Java 2023年6月3日
    00
  • 基于Hibernate中配置文件的学习(分享)

    以下是详细讲解“基于Hibernate中配置文件的学习(分享)”的完整攻略。 一、学习目标 本文旨在帮助初学者了解Hibernate配置文件的概念、作用和基本语法,以及如何在项目中使用Hibernate配置文件。 二、什么是Hibernate配置文件 Hibernate配置文件是指用来配置Hibernate框架运行参数和相应属性的一组XML文档。Hibern…

    Java 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部