MyBatisPlus学习笔记__01:简介+入门+CRUD扩展
发布日期:2021-04-30 21:06:23 浏览次数:121 分类:精选文章

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

MyBatis Plus入门到进阶全解析

一、MyBatis Plus简介

MyBatis Plus(简称MP)是一款基于MyBatis框架的增强工具,专注于简化开发流程、提高开发效率。它通过自动化CRUD操作,帮助开发者减少重复性代码,降低配置门槛,是一款极具实用价值的工具。

特点:

  • 无侵入性:仅进行增强,不改变现有代码,完美兼容。
  • 性能优越:启动即自动注入基础CRUD功能,性能损耗极低。
  • 强大功能:支持主键自动生成、Lambda表达式、分页插件、性能分析等多种增强功能。
  • ** ActiveRecord模式**:支持实体类继承Model类,实现简洁的CRUD操作。
  • 扩展性强:支持自定义全局操作和代码生成器,满足个性化需求。
  • 二、快速入门

    1. 简单使用步骤

    • 导入依赖:添加MyBatis-Plus、Lombok、MySQL等相关依赖。
    • 配置数据库:创建数据库并初始化表结构。
    • 编写实体类:定义POJO类,继承BaseMapper接口即可完成CRUD操作。
    • 启动项目:使用Spring Boot初始化项目,扫描Mapper接口。

    2. 配置示例

    • 数据库配置

      spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plusspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    • 实体类示例

      @Data@AllArgsConstructor@NoArgsConstructorpublic class User {    private Long id;    private String name;    private Integer age;    private String email;}
    • Mapper接口

      public interface UserMapper extends BaseMapper
      {}

    3. 测试验证

    • 插入数据

      @Testpublic void testInsert() {    User user = new User();    user.setName("张三");    user.setAge(30);    user.setEmail("zhangsan@baomidou.com");    int result = userMapper.insert(user);    System.out.println(result);}
    • 查询数据

      @Testpublic void testSelect() {    List
      users = userMapper.selectList(null); users.forEach(System.out::println);}

    三、CRUD操作扩展

    1. 插入数据

    通过MyBatis Plus,插入操作变得简单:

    @Testpublic void testInsert() {    User user = new User();    user.setName("张三");    user.setAge(30);    user.setEmail("zhangsan@baomidou.com");    int result = userMapper.insert(user);    System.out.println(result);}

    2. 主键生成策略

    MyBatis Plus支持多种主键生成方式,包括雪花算法、自增、UUID等。默认使用雪花算法,适用于分布式系统。

    3. 更新数据

    动态SQL支持灵活的更新操作:

    @Testpublic void testUpdate() {    User user = new User();    user.setId(2L);    user.setName("李四");    int result = userMapper.updateById(user);    System.out.println(result);}

    4. 自动填充

    通过配置MetaObjectHandler,自动填充创建时间和更新时间:

    @Component@Slf4jpublic class MyMetaObjectHandler extends MetaObjectHandler {    @Override    public void insertFill(MetaObject metaObject) {        log.info("自动插入时间字段");        setFieldValByName("createTime", new Date(), metaObject);        setFieldValByName("updateTime", new Date(), metaObject);    }    @Override    public void updateFill(MetaObject metaObject) {        log.info("自动更新时间字段");        setFieldValByName("updateTime", new Date(), metaObject);    }}

    5. 乐观锁实现

    通过注册OptimisticLockerInterceptor,实现乐观锁:

    @Configuration@EnableTransactionManagement@MapperScan("com.lut.mapper")public class MyBatisPlusConfig {    @Bean    public OptimisticLockerInterceptor optimisticLockerInterceptor() {        return new OptimisticLockerInterceptor();    }}

    6. 分页查询

    内置分页插件支持快速分页:

    @Testpublic void testPage() {    Page
    page = new Page<>(1, 5); List
    users = userMapper.selectPage(page, null); users.forEach(System.out::println); System.out.println(page.getTotal()); System.out.println(page.hasNext()); System.out.println(page.hasPrevious());}

    7. 删除操作

    支持批量删除和逻辑删除:

    @Testpublic void testDelete() {    userMapper.deleteById(6L);}@Testpublic void testDeleteBatchId() {    userMapper.deleteBatchIds(Arrays.asList(1287326823914405893L, 1287326823914405894L));}

    四、总结

    通过以上内容,可以看出MyBatis Plus为开发者提供了一个高效、灵活的CRUD操作解决方案。它通过自动化和增强功能,大大提升了开发效率,同时减少了代码冗余和配置复杂度。无论是初次接触还是深入使用,MyBatis Plus都能成为每个开发者的理想选择。

    上一篇:synchronized与volatile
    下一篇:I/O模型与Netty(三)

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2026年06月18日 14时32分28秒