MyBatis-Plus 用起来真的很舒服

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生 。
整合SpringBoot创建数据库和数据表:
CREATE DATABASE mybatisplus;CREATE TABLE tbl_employee( id INT(11) PRIMARY KEY AUTO_INCREMENT, last_name VARCHAR(255), email VARCHAR(255), gender CHAR(1), age INT(11));INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('tom','tom@qq.com',1,20);INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('jack','jack@qq.com',1,21);INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('jerry','jerry@qq.com',0,22);INSERT INTO tbl_employee(last_name,email,gender,age) VALUES('smith','smith@qq.com',0,23);

MyBatis-Plus 用起来真的很舒服

文章插图
 
创建数据表对应的Bean类:
@Data@NoArgsConstructor@AllArgsConstructorpublic class Employee {    private Integer id;    private String lastName;    private String email;    private Integer gender;    private Integer age;}
MyBatis-Plus 用起来真的很舒服

文章插图
 
添加依赖:
<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter</artifactId></dependency><dependency>  <groupId>org.projectlombok</groupId>  <artifactId>lombok</artifactId></dependency><dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-boot-starter</artifactId>  <version>3.3.1</version></dependency><dependency>  <groupId>MySQL</groupId>  <artifactId>mysql-connector-JAVA</artifactId></dependency><dependency>  <groupId>com.alibaba</groupId>  <artifactId>druid-spring-boot-starter</artifactId>  <version>1.1.13</version></dependency>
MyBatis-Plus 用起来真的很舒服

文章插图
 
配置数据源:
spring:  datasource:    url: jdbc:mysql:///mybatisplus?serverTimezone=UTC    driver-class-name: com.mysql.cj.jdbc.Driver    username: root    password: 123456    type: com.alibaba.druid.pool.DruidDataSourcemybatis-plus:  configuration:    log-impl: org.Apache.ibatis.logging.stdout.StdOutImpl # 输出sql
MyBatis-Plus 用起来真的很舒服

文章插图
 
最后在启动类上添加MApper接口扫描注解:
@SpringBootApplication@MapperScan("com.wwj.mybatisplusdemo.mapper")public class MybatisplusDemoApplication {    public static void main(String[] args) {        SpringApplication.run(MybatisplusDemoApplication.class, args);    }}
MyBatis-Plus 用起来真的很舒服

文章插图
 
通用CRUD回想一下传统的MyBatis开发,若是想要实现员工信息的增删改查,该如何实现?我们需要编写Mapper接口,并创建对应的映射文件,然后配置每一个接口方法对应的sql,对于一些非常简单的操作,这些步骤显然非常麻烦,那么有没有可能让这些简单的增删改查自动实现呢?MyBatisPlus帮我们实现了这个想法,在MyBatisPlus中,我们只需要创建Mapper接口并继承BaseMapper即可获得员工表的增删改查方法 。
创建Mapper接口:
public interface EmployeeMapper extends BaseMapper<Employee> {}
MyBatis-Plus 用起来真的很舒服

文章插图
 
既然继承了BaseMapper接口就拥有了增删改查方法,那么这些方法肯定是从BaseMapper中继承下来的,所以来看看BaseMapper的源码:
public interface BaseMapper<T> extends Mapper<T> {    int insert(T entity);    int deleteById(Serializable id);    int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);    int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);    int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);    int updateById(@Param(Constants.ENTITY) T entity);    int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);    T selectById(Serializable id);    List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);    List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);    T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    <E extends IPage<T>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);}


推荐阅读