引入
本文以下将mybatisPlus简称为mp
首先注意: mybatisPlus不是mybatis 的替代品,而是增强mybatis的技术.
只做增强不做改变, 引入他不会对现有工程产生影响.

快速入门
基本步骤



以下为mapper例子:
要继承这个BaseMapper类, 并在泛型括号中 标注好要操作的类
public interface UserMapper extends BaseMapper<User> {
    void saveUser(User user);
    void deleteUser(Long id);
    void updateUser(User user);
    User queryUserById(@Param("id") Long id);
    List<User> queryUserByIds(@Param("ids") List<Long> ids);
}

常用注解
注意:mp遵守的约定如下,如不符合则使用右图注解来标记
mp要操作, 表中必须有一个主键, 否则它无法进行自动操作


举例使用如下;

注意:如果不指定主键的设置方法 ,默认为雪花算法自动生成


常用配置

附带了全局配置,但是配置优先级不如局部配置
使用的完整流程

核心功能
条件构造器


 案例
案例
 
基于以下原始sql设计mp语句

QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .select("id","username","info")
                .like("username","o")
                .ge("balance","1000");void testUpdateById() {
        /*要更新的数据*/
        User user = new User();
        user.setBalance(2000);
        /*更新条件*/
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .eq("username","jack");
        userMapper.update(user,wrapper);
    }IService(核心)


新增用户操作: 不需要写service代码,只需要在mapper层注入service并调用相应方法即可

删除用户操作: 也不需要写service代码,只需要在mapper层注入service并调用相应方法即可

查询(批量)用户操作同理

复杂的业务逻辑, 我们可以在service层中, 通过条件判断 规避掉复杂的语句, 如下使用if. 再用mapper执行简单的sql语句


批量新增

首先修改批处理配置 设置为true

一次插入要多少 就准备多大的集合, 然后通过循环把每一条数据装载到list中, 每当达到上限时 就使用service的方法执行sql. 然后清空list 继续装载下一批.

扩展功能
1.代码生成器
使用步骤


此处可能会有时区错误,尝试输入以下url:
jdbc:mysql://localhost/mp?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

然后点击提交,这个插件便会帮你自动生成对应的代码框架,大大简化了重复代码的劳动
2.静态工具(待完善)
3.逻辑删除


4.枚举处理器(待完善)
插件功能(待完善)
分页查询插件
总结
学完mp以后, 我认为他最大的优势在于写简单crud方面很便捷, 但在写复杂sql语句时不如使用mybatis来的快, xml的可读性甚至比这更高一些,复用也更强.
同时,使用Iservice虽然便捷, 但是对于service层的侵入 是好是坏还有待考究.

![【题解】[NOIP2015]扫雷游戏(Java  C++)](https://img-blog.csdnimg.cn/0c95169617ff40349b44ab0ac1ac0381.png)


















