Mybatis 框架 ( 三 ) Mybatis-Plus

4.Mybatis-plus

官网 : https://www.baomidou.com/

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上封装了大量常规操作,减少了SQL的编写量。

4.1.Maven依赖

使用时通常通过Springboot框架整合使用

并且使用Lombok框架简化实体类

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

	    <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

重点注意 :

  1. 与 SpringBoot整合时, 在启动类增加注解 @MapperScan("mapper接口路径 ") 或者 在每一个Mapper类上加 @Mapper注解

这样做的目的是为Spring框架能够扫描到这些Mapper接口, 并进行依赖注入到Service类

  1. Mybatis-Plus 在处理连表查询操作时, 还是要编写SQL语句进行连表的

但是结果集封装不再需要 resultMap 结点, 可以直接通过 resultType属性指向实体类

因为在实体类中通过 注解已经指明 属性与字段的对应关系

4.2.Service层

4.2.1.结构

在这里插入图片描述

4.2.2.代码

Mybatis-Plus 提供了 IService 接口 及 ServiceImpl实现类, 并封装大量操作方法

接口 :

// 接口
import com.yuan.mybatisplus.entity.Teacher;
import com.baomidou.mybatisplus.extension.service.IService;

public interface TeacherService extends IService<Teacher> {

}

实现类 :

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuan.mybatisplus.entity.Teacher;
import com.yuan.mybatisplus.mapper.TeacherMapper;
import com.yuan.mybatisplus.service.TeacherService;

public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher>
    implements TeacherService{

}

4.2.3.常用方法

.list(); //查询
.list(Wrapper<T>); //条件查询
.getById(Serializable); // 根据主键查询
.save(T); //插入数据
.updateById(T); //以 主键匹配 修改数据
.removeById(Serializable); // 根据 主键 删除
.removeByIds(Collection<? extends Serializable> ); // 根据主键集合 删除多条记录

4.3.Mapper层

4.3.1.结构

在这里插入图片描述

可以看到 BaseMapper定义了基本操作方法

4.3.2.代码

import com.yuan.mybatisplus.entity.Teacher;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface TeacherMapper extends BaseMapper<Teacher> {

}

4.4.Entity 实体类

在实体类中通过注解说明与数据库表的对应关系

@TableName(value ="表名") // 这个不是必需的

@Data // lombok的注解, 封装了Setter/Getter/ toString()/ 无参构造/ 有参构造 等基本方法, 使代码更简洁

@TableId(type = IdType.AUTO) // 指明主键,

type = IdType.AUTO 用于说明 主键自增长 , 也可以

@TableField(exist = false) // 指明当前属性没有对应的字段

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * 教师  teacher
 * @TableName teacher
 */
@TableName(value ="teacher")
@Data
public class Teacher implements Serializable {
    /**
     * 讲师主键
     */
    @TableId(type = IdType.AUTO)
    private Integer tchId;

    /**
     * 讲师姓名
     */
    private String tchName;

    /**
     * 讲师介绍
     */
    private String tchInfo;

    /**
     * 讲师性别
     */
    private Boolean tchSex;

    /**
     * 讲师注册时间
     */
    private Date tchRegTime;

    /**
     * 讲师头像
     */
    private String tchPic;

    /**
     * 登录账号
     */
    private String tchUser;

    /**
     * 登录密码
     */
    private String tchPass;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

4.5.Wrapper条件构造器

在这里插入图片描述

Wrapper : 条件构造抽象类,最顶端父类

AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件

QueryWrapper : Entity 对象封装操作类,不是用lambda语法

UpdateWrapper : Update 条件封装,用于Entity对象更新操作

AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。

LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper ***

LambdaUpdateWrapper : Lambda 更新封装Wrapper

具体方法参考官网

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>