浅析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日

相关文章

  • 解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    当使用MyBatis Plus插件时,我们有时会遇到将空字符串或null值保存到数据库的问题。这是因为MyBatis Plus默认情况下忽略了这些值。解决这个问题的一种方法是使用注解@TableField来告诉MyBatis Plus要保存这些值。 下面是具体的攻略: 1. 使用注解@TableField保存空字符串 可以在实体类的属性上添加@TableFi…

    Java 2023年5月27日
    00
  • Maven将代码及依赖打成一个Jar包的方式详解(最新推荐)

    下面是详细讲解Maven将代码及其依赖打成一个Jar包的完整攻略: 前提条件 在开始前,需要确保在本地预装了Maven,并已经配置好了Maven环境变量。 Step 1:创建Maven项目并导入依赖 在命令行窗口中,进入到要创建项目的目录,执行以下命令: mvn archetype:generate -DgroupId=your.group.id -Dart…

    Java 2023年6月2日
    00
  • Java实现冒泡排序算法

    当需要对一个数组(或者列表)进行排序时,冒泡排序是最基本的一种排序算法之一。下面详细讲解Java实现冒泡排序算法的完整攻略。 定义 “冒泡排序”指的是通过不断地比较相邻的元素,并交换不合适的元素位置,从而逐步将无序的元素移动到正确的位置。它的过程像气泡不断从水中升起,因此得名“冒泡排序”。 实现 下面是Java实现冒泡排序的示例代码: public stat…

    Java 2023年5月19日
    00
  • 解析SpringSecurity自定义登录验证成功与失败的结果处理问题

    好的。对于Spring Security自定义登录验证成功与失败的结果处理过程,一般需要完成以下几个步骤: 定义登录页面。 配置Spring Security登录验证相关内容。 定义验证成功与失败的结果处理逻辑。 配置登录页面等相关信息。 具体来说,详细步骤如下: 1. 定义登录页面 首先,我们需要定义自己的登录页面。可以使用HTML、JSP、Thymele…

    Java 2023年5月20日
    00
  • JAVA IDEA入门使用手册(新手小白必备)

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

    Java 2023年5月23日
    00
  • 基于Java class对象说明、Java 静态变量声明和赋值说明(详解)

    基于Java class对象说明、Java 静态变量声明和赋值说明 在Java编程中,类是Java程序的基本单位,每个类都有它自己的类对象。在使用Java class对象时,我们需要注意到它们可以被用来声明和访问许多Java静态变量。这篇文章将详细讲解Java class对象的基础知识以及静态变量声明和赋值的说明。 Java Class对象 在Java中,每…

    Java 2023年5月26日
    00
  • maven项目打包上传到私有仓库

    下面是“Maven项目打包上传到私有仓库”的完整攻略: 1. 创建maven项目 首先我们需要创建一个maven项目,这里就不多赘述了,可以通过以下命令在终端中创建一个maven项目: mvn archetype:generate -DgroupId=com.example -DartifactId=my-webapp -DarchetypeArtifact…

    Java 2023年5月19日
    00
  • 在JSP中使用formatNumber控制要显示的小数位数方法

    在JSP中,可以使用<fmt:formatNumber>标签来控制数字的显示格式,包括小数位数。 步骤如下: 在JSP页面中引入JSTL标签库: <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@tagli…

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