一、前言:
在学习之前我们首先应改先了解一下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方法里面都有解释大家有兴趣可以了解一下
在我标注的红色框那里 可以点击下载中文文档