MybatisPlus(1)

2023年 9月 29日 22.6k 0

 前言🍭

❤️❤️❤️Spring专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️

Spring + Spring MVC + MyBatis专栏

MyBatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了一些常用的 CRUD 操作,以及分页、动态 SQL 等常用功能,同时也支持自定义 SQL 语句和存储过程。

一、MybatisPlus简介🍭

MyBatis-Plus官网有两个,第一个域名是热心网友捐赠的(之前已经被申请过了),第二个是正牌官网(国人开发的,为中文)。

MyBatis-Plus 
MyBatis-Plus (baomidou.com)

我们可以跟着官网学,这个十分照顾新手。

image.png

1、 MybatisPlus特性🍉

  • 无侵入: 只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作: 内置通用 Mapper,少量配置即可实现单表CRUD 操作
  • 支持 Lambda: 编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件
  • ......

详情可见官网:

image.png

总结:使用MybatisPlus几乎可以让你什么都不写,代码简化到极致。

2、MyBatis-Plus历史发展🍉

MyBatis-Plus是一个基于MyBatis的增强工具库,旨在简化和增强MyBatis的开发。下面是MyBatis-Plus的历史发展的总结:

  • 2012年:MyBatis-Plus的前身是一个名为MyBatis-Plus-Generator的代码生成器,由Javen开发并在GitHub上发布。该代码生成器可以根据数据库表结构自动生成MyBatis的实体类、Mapper接口和XML映射文件。
  • 2016年:MyBatis-Plus开始独立发展,并发布了第一个版本。它提供了一系列的增强功能,包括通用Mapper、分页插件、逻辑删除、自动填充等,简化了MyBatis的开发。
  • 2017年:MyBatis-Plus发布了2.0版本,引入了更多的增强功能,例如性能分析插件、动态表名、多租户支持等。
  • 2018年:MyBatis-Plus发布了3.0版本,引入了Lambda表达式查询、代码生成器的可视化界面等功能,进一步提升了开发效率。
  • 2019年:MyBatis-Plus发布了3.1版本,增加了更多的增强功能和改进,包括多数据源支持、全局拦截器等。
  • 2020年:MyBatis-Plus发布了3.2版本,引入了更多的增强功能,如多租户数据隔离、性能优化等。
  • 2021年:MyBatis-Plus发布了3.3版本,进一步完善了功能,并修复了一些bug。
  • 截至目前,MyBatis-Plus已经成为了一个功能强大、稳定可靠的开发工具库,广泛应用于Java项目中,极大地简化了MyBatis的开发工作。它的持续发展得益于社区的贡献和活跃的维护。

    更具体的可以看MyBatis-Plus官网更新日志:mybatis-plus/CHANGELOG.md at 3.0 · baomidou/mybatis-plus · GitHub

     二、MyBatis-Plus入门案例🍭

    1、新建项目🍉

    image.png

    只选择MySQL Driver(暂时不使用SpringWeb),MyBatis-Plus配置文件需要自己手动添加。

            
                com.baomidou
                mybatis-plus-boot-starter
                3.4.1
            
    

    并且不再需要导入 mybatis和mybatis整合spring的jar包:

    image.png

    还有一个druid jar包:

            
                com.alibaba
                druid
                1.1.16
            
    

    2、连接数据库🍉

    # 配置数据库的连接字符串
    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/ku2022?characterEncoding=utf8
        username: root
        password: "123456"
        driver-class-name: com.mysql.cj.jdbc.Driver
    

    所使用的库中需要有与user实体类名字相同的表:

    image.png

     3、UserDao接口🍉

    之前的Mapper需要写方法:

    package com.example.ssmdemo1.mapper;
     
    import com.example.ssmdemo1.entity.Userinfo;
    import org.apache.ibatis.annotations.Mapper;
     
    @Mapper//需要添加 @Mapper 注解
    public interface UserMapper {
        Userinfo getUserById(Integer id);
    }
    

    MyBatis-Plus之后:

    package com.example.dao;
     
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.example.domain.User;
    import org.apache.ibatis.annotations.Mapper;
     
    @Mapper
    public interface UserDao extends BaseMapper {
    }
    

    点进BaseMapper中去,可以看到它自带了非常多的方法:

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by FernFlower decompiler)
    //

    package com.baomidou.mybatisplus.core.mapper;

    import com.baomidou.mybatisplus.core.conditions.Wrapper;
    import com.baomidou.mybatisplus.core.metadata.IPage;
    import java.io.Serializable;
    import java.util.Collection;
    import java.util.List;
    import java.util.Map;
    import org.apache.ibatis.annotations.Param;

    public interface BaseMapper extends Mapper {
    int insert(T entity);

    int deleteById(Serializable id);

    int deleteByMap(@Param("cm") Map columnMap);

    int delete(@Param("ew") Wrapper queryWrapper);

    int deleteBatchIds(@Param("coll") Collection

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论