MyBatis-Plus 是一个基于 MyBatis 的增强工具,它简化了 MyBatis 的开发流程,提供了更便捷的 CRUD 操作、条件构造器、分页、代码生成等功能,使得 Java 开发者可以更轻松地与数据库交互,提高开发效率。
一:常见注解
参数是指定泛型,此处为user类,MP基于反射得到实体类信息
简单来说,实体类跟数据库表一一对照,正因如此,mp才可以自动帮我们生成sql语句
默认规则:
-
类名驼峰转下划线作为表名
-
名为id的键作为主键
-
变量名驼峰转下划线作为表的字段名
用于自动生成代码时替换为对应的表名和字段名
举例:
(is开头mp会识别is自动去除,所以要加上field注解;如果是数据库字段如order,需要加上模板字符串)
二、核心功能
条件构造器
Wrapper,就是条件构造器。
它有一子类abstractWrapper
queryWrapper在abstractWrapper基础上拓展了select功能
Update拓展了set部分,传入string,用字符串的形式把set的部分写入Sql语句里
用法演示:
需求以及SQL语句:
需求:
利用MP可以写成:
需求:
利用MP可以写成:
需求:
针对这边需求,使用setSql可直接写sql语句:
刚刚Wrapper父子类树状图中左下角三个lambda相关的wrapper,只是基于lambda语法,其他都一样,参数中传函数而不是传字符串
总结:
自定义sql
我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。
原有方法的弊端:在setsql中写sql语句,这属于业务逻辑,为了规范化不应写在这里
标准写法:
-
基于Wrapper构建where语句
2.在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew
void updateBalanceByIds(@Param("ew") LambdaQueryWrapper<User> wrapper, @Param("amount") int amount);
3.在xml中自定义sql,并使用Wrapper条件
例子:
Service接口
提供了一个iService接口,提供了大量用于增删改查的方法
-
增
-
删
-
改
-
查
查单个,查数目(count)
查多个,分页查询(page)
如何继承 iService:
我们的UserService从iService继承了大量的接口,但接口需要写实现类,为了避免写大量实现类,如何解决?
MP中的iService本身有一个实现类ServiceImpl,我们用UserServiceImpl继承ServiceImpl就可以。
三、实例演示
1. 首先在项目的domain中创建dto和vo类;
2. 编写UserController
在 Java 中使用注解 @RequiredArgsConstructor 通常是使用 Lombok 库提供的功能。这个注解会生成一个构造函数,该构造函数接受所有被声明为 final 的未初始化字段作为参数,并以它们的顺序初始化这些字段。
增
删
查