MyBatis与MyBatis-Plus的分页以及转换

这篇具有很好参考价值的文章主要介绍了MyBatis与MyBatis-Plus的分页以及转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

MyBatis和MyBatis-Plus都是Java持久化框架,用于简化数据库访问和操作。它们提供了面向对象的方式来管理关系型数据库中的数据。

MyBatis是一个轻量级的持久化框架,通过XML或注解配置,将SQL语句与Java对象进行映射,使开发者可以使用简单的API来执行数据库操作。MyBatis支持动态SQL、缓存、批处理等功能,并与多种数据库兼容。

MyBatis-Plus是在MyBatis的基础上构建的增强版框架。它提供了更多的便利功能和增强特性,使开发者能够更加高效地进行数据库访问。MyBatis-Plus内置了常见的CRUD操作方法,还提供了代码生成器、分页插件、逻辑删除、多租户支持等功能,大大简化了开发流程。

总结而言,MyBatis是一个成熟且灵活的持久化框架,而MyBatis-Plus则是在此基础上进行了扩展和增强,提供了更多的便利功能和工具。选择使用哪个框架取决于项目需求和个人偏好。

二、MyBatis与MyBatis-Plus区别

1、MyBatis:

特点:

MyBatis是一款持久层框架,它通过XML或注解配置SQL映射关系,将数据库操作与Java对象的映射分离。它提供了灵活的SQL编写方式,支持动态SQL和批量操作等功能。

优点:

1、灵活性高:MyBatis通过XML或注解配置SQL语句,可以满足各种复杂的SQL需求,包括动态SQL、复杂查询等。

2、性能好:MyBatis可以手动优化SQL语句,保证数据库访问的效率。

3、易于集成:MyBatis可以与各种第三方框架(如Spring)无缝集成,使用起来比较方便。

缺点:

1、编写工作量大:相对于其他ORM框架,MyBatis需要手动编写SQL语句,会增加一定的开发工作量。

2、学习成本较高:MyBatis需要掌握SQL语句的编写和框架的配置,对于初学者来说,学习曲线较陡峭。

2、MyBatis-Plus

特点:

MyBatis-Plus是在MyBatis基础上进行封装的增强工具,提供了更便捷的CRUD操作和一些常用功能的封装。

优点:

1、简化开发:MyBatis-Plus提供了一系列的CRUD操作方法和查询构造器,可以极大地简化开发过程,减少重复代码的编写。

2、更加易用:MyBatis-Plus提供了一些常用功能的封装,如分页查询、逻辑删除等,开发人员可以更轻松地使用这些功能,提高开发效率。

3、自动生成CRUD方法:MyBatis-Plus支持根据数据库表自动生成对应的实体类和Mapper接口,大大减少了手动编写CRUD方法的工作量。

缺点:

1、对于复杂SQL的支持较弱:相比于MyBatis,MyBatis-Plus在处理一些复杂的SQL语句时,可能会有一定的限制。

区别:

主要区别如下:

1、MyBatis需要手动传递offsetlimit参数,而MyBatis-Plus使用Page对象来封装分页信息。

2、MyBatis-Plus提供了更简单的API,如selectPage(),可以自动计算总记录数并返回分页结果。

3、MyBatis-Plus还提供了更多高级的分页查询功能,如排序、自定义SQL等。

选择使用哪种方式取决于个人偏好和项目需求。如果你希望更简洁、方便的方式实现分页查询,可以考虑使用MyBatis-Plus。

三、MyBatis分页

在MyBatis中,分页查询需要使用两个参数:offset(偏移量)和limit(限制数量),它们用于控制查询结果的起始位置和返回的记录数。下面是一个使用MyBatis进行分页查询的示例:

@Mapper
public interface UserMapper {
    List<User> getUsers(@Param("offset") int offset, @Param("limit") int limit);
}

然后,在XML映射文件中,使用${}占位符来引用这两个参数: 

<select id="getUsers" resultType="User">
    SELECT * FROM users
    LIMIT #{offset}, #{limit}
</select>

 通过传递正确的offsetlimit值,可以实现分页查询。

四、MyBatis-Plus分页

相比之下,MyBatis-Plus提供了更简单的分页查询方式。它引入了一个Page对象,该对象封装了与分页相关的信息,如当前页码、每页记录数等。下面是使用MyBatis-Plus进行分页查询的示例:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public Page<User> getUsers(int pageNo, int pageSize) {
        Page<User> page = new Page<>(pageNo, pageSize);
        return userMapper.selectPage(page, null);
    }
}

在这个例子中,Page<User>对象用于封装分页信息,并且通过userMapper.selectPage()方法进行查询。

需要注意的是,MyBatis-Plus还提供了更多高级的分页查询功能,例如自动计算总记录数、排序等。

五、MyBatis向MyBatis-Plus转换

步骤 1:添加相关依赖

首先,在项目的构建文件中(如Maven的pom.xml或Gradle的build.gradle)添加MyBatis-Plus的依赖。根据你的具体需求和项目环境,可以在这里找到相应的依赖:MyBatis-Plus官方文档

步骤 2:修改Mapper接口

在Mapper接口中,使用com.baomidou.mybatisplus.core.mapper.BaseMapper作为父接口,该接口包含了MyBatis-Plus提供的CRUD方法以及分页查询方法。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface YourMapper extends BaseMapper<YourEntity> {
}

步骤 3:配置分页插件

在MyBatis的配置文件中(通常是mybatis-config.xml),添加MyBatis-Plus的分页插件配置。这个插件会自动拦截原本的分页查询语句并实现分页功能。

<configuration>
    <!-- 其他配置 -->
    
    <plugins>
        <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
            <property name="dialectType" value="mysql"/> <!-- 数据库类型 -->
        </plugin>
    </plugins>
</configuration>

步骤 4:修改分页查询方法

在原先的分页查询方法中,将PageHelper.startPage()替换为MyBatis-Plus提供的com.baomidou.mybatisplus.extension.plugins.pagination.Page对象,并调用对应的分页方法。

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;

@Repository
public class YourRepository {
    private final YourMapper yourMapper;

    public YourRepository(YourMapper yourMapper) {
        this.yourMapper = yourMapper;
    }
    
    public Page<YourEntity> findEntitiesWithPagination(int pageNum, int pageSize) {
        return yourMapper.selectPage(new Page<>(pageNum, pageSize), null);
    }
}

这样就完成了将MyBatis的分页改为MyBatis-Plus的分页的步骤。请根据你的具体项目和需求进行相应的修改和调整。文章来源地址https://www.toymoban.com/news/detail-682482.html

到了这里,关于MyBatis与MyBatis-Plus的分页以及转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis-plus实现分页查询

    分页查询使用的方法是: IPage:用来构建分页查询条件 Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null IPage:返回值,你会发现构建分页条件和方法的返回值都是IPage IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+

    2023年04月08日
    浏览(52)
  • MyBatis-Plus 分页设置不生效

    在配置类上加拦截器 2.当你设置了数据源需要在数据源上添加拦截器

    2024年02月15日
    浏览(45)
  • Mybatis-Plus学习4 Page分页

    ctrl + P = 查看可填的属性类型  alt + 回车 = 自动填充数据类型 1、使用Page分页需要先配置config类,加上拦截器 type-aliasys-package配置pojo对象别名对应的包 自定义的Mapper的page查询: 乐观锁 和 悲观锁 悲观锁: 悲观锁的思想是,在操作数据之前,先假设其他并发操作会对数据进行

    2024年02月12日
    浏览(45)
  • MyBatis-Plus分页查询(快速上手运用)

    Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客   Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客 MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博

    2024年02月16日
    浏览(53)
  • MyBatis-Plus自定义分页模型

    MyBatis-Plus自带的分页模型Page有些参数,我觉得不是很必要,因此自定义自己的分页模型。该类继承了 IPage 类,实现了简单分页模型如果你要实现自己的分页模型可以继承 Page 类或者实现 IPage 类。因为Java是单继承多实现的,所以我们使用实现IPage接口的方式实现我们自己的分

    2024年02月12日
    浏览(39)
  • springboot使用Mybatis-plus分页插件

    在  pom.xml   文件中添加 MyBatis Plus 和分页插件的依赖: 注意替换  {mybatis-plus-version}  为对应的版本号。 在 Spring Boot 的配置文件  application.yml   中添加分页插件的配置参数: 注意代码中的注释,其中   PaginationInterceptor  表示使用 MyBatis Plus 提供的分页插件。 在接口层使用

    2024年02月07日
    浏览(44)
  • MyBatis-Plus Page 分页不生效

    一、问题现象 使用 MyBatis-Plus 进行分页查询时,传入了 pageNum 和 pageSize,但是查询结果没有按照预期的效果返回。 二、问题原因 没有对 Mybatis-Puls 进行初始化,需要添加相应的配置类。 三、解决方案 在项目工程中创建 config 目录,在其中新建配置类 MyBatisPlusConfig.java 。 注意

    2024年02月12日
    浏览(43)
  • Mybatis-plus 分页 自定义count方法

    使用了mybatisplus 语句中有order by 语法 mybatisplus会使用 select count(*) from (子语句) TOTAL 算出total 但是会报错 查询条件QueryWrapper中还有order by排序条件,则生成的select count(*) from(sql) 就会报错 除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查

    2024年04月23日
    浏览(50)
  • 【SpringBoot】MyBatis与MyBatis-Plus分页查询 & github中的PageHelper

            笔者写这篇博客是因为近期遇到的关于两者之间的分页代码差距,其实之前也遇见过但是没有去整理这篇博客,但由于还是被困扰了小一会儿时间,所以还是需要 加深记忆 。其实会看前后端传参解决这个问题很快、不麻烦。关于这两个框架的分页代码问题主要就

    2024年02月03日
    浏览(58)
  • 最新-mybatis-plus 3.5分页插件配置

    前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5,升级后发现原本的分页竟然不起作用了,每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包,因为版本太低不能使用吗,这个依赖直接删除了,因为mp中本身自己就有这个jar包 以前的配

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包