MybatisPlus - IService高级操作学习笔记

一、前言:

在学习之前我们首先应改先了解一下MyBatisPlus最基本的使用 Iservice我个人理解就是在原先的通用Mapper的接口上进行了Lambda方式增强,对我们在实际开发工作中来说 批量Add 等一系列单表操作 可以实现一把梭 简直太香了。

二、Plus配置:

1、Plus-分页插件


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author zhu
 * @date 2021/7/12 14:02
 */
@Configuration
@MapperScan("cn.zhu.dao.mapper*")
public class MybatisPlusConfig {
    
    
    /**
     * Plus-分页插件
     *
     * @return MybatisPlusInterceptor
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
    
    
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

2、自动填充功能:

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author zhu
 * @date 2021/7/14 11:18
 * Mybatis_Plus 自动填充功能
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    
    

    @Override
    public void insertFill(MetaObject metaObject) {
    
    
        this.strictInsertFill(metaObject, "createTime",
                LocalDateTime::now,
                LocalDateTime.class);

    }

    @Override
    public void updateFill(MetaObject metaObject) {
    
    
        this.strictUpdateFill(metaObject, "updateTime",
                LocalDateTime::now,
                LocalDateTime.class);

    }
}

3、DMO参数对象:

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户表(User)实体类
 *
 * @author
 * @since 2021-09-09 10:25:22
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class UserDmo implements Serializable {
    
    
    private static final long serialVersionUID = 442590537014499403L;
     /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    protected ID id;

    /**
     * 用户编号
     */
    private String userNumber;
    /**
     * 用户名
     */
    private String userName;
    /**
     * 头像
     */
    private String icon;
    /**
     * 性别 1 男 2女
     */
    private Integer gender;
    /**
     * 电话
     */
    private String phone;
   
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    protected LocalDateTime createTime;

    /**
     * 更新时间。  fill = FieldFill.UPDATE 自动检测 并且补充修改时间字段参数
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    protected LocalDateTime updateTime;

    /**
     * 是否删除(0-未删除 1-已删除)
     */
    @TableField(value = "del_flag")
    @TableLogic(value = "0", delval = "1")
    protected Integer delFlag;

    /**
     * 查询条件-开始时间   false在使用会忽略该参数
     */
    @TableField(exist = false)
    protected String startTime;
}


三、实际使用:
Mapper层

/**
 * @author zhu
 * @date 2021/9/9 10:36
 */
@Repository
public interface UserMapper extends BaseMapper<UserDmo> {
    
    }

接口:

/**
 * @description:
 * @author: zhu
 * @time: 2021/9/9 14:20
 */
public interface UserService extends IService<UserDmo> {
    
    }

实现类:

@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserDmo> implements UserService {
    
    }

在这里插入图片描述
在这里插入图片描述

修改时可以采用lambda表达式来使用 满足true 则加上修改条件

我们来看看IService底层源码:
发现最总还是调用MyBatisPlus提供的Mapper接口 在原有的基础上,在进行增强。
具体的Api方法里面都有解释大家有兴趣可以了解一下
在这里插入图片描述
在我标注的红色框那里 可以点击下载中文文档
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48134878/article/details/120887516