目录:

(1)更新操作

(2)自动填充处理


这里的设置跟上一篇的一样,使用上一篇中的项目:

(1)更新操作

MPJBaseMapper中的save basemapper.update_java

MPJBaseMapper中的save basemapper.update_开发语言_02

测试类:

package com.kuang;

import com.kuang.mapper.UserMapper;
import com.kuang.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class MybatisPlusApplicationTests {
    //测试,我们没有写任何CRUD,测试我们能不能使用
    //继承了BaseMapper,所有的方法都来自父类,我们也可以编写自己的扩展方法
    @Autowired
    private UserMapper userMapper;

    
    //更新测试
    public void testUpdate(){
        User user=new User();
        //根据条件自动拼接动态sql
        user.setId(6L);
        user.setName("关注公众号:狂神说");
        user.setAge(18);

        //注意:updateById 但是参数是一个对象!通过主键id进行更新
        int i=userMapper.updateById(user);
        System.out.println(i);
    }
}

 运行之前数据库中的表:

MPJBaseMapper中的save basemapper.update_开发语言_03

运行更新测试:

MPJBaseMapper中的save basemapper.update_开发语言_04

运行之后数据库中的表:

 

MPJBaseMapper中的save basemapper.update_mybatis_05

 (2)自动填充处理

MPJBaseMapper中的save basemapper.update_mybatis_06

 

MPJBaseMapper中的save basemapper.update_开发语言_07

MPJBaseMapper中的save basemapper.update_mybatis_08

MPJBaseMapper中的save basemapper.update_开发语言_09

MPJBaseMapper中的save basemapper.update_mybatis_10

 

MPJBaseMapper中的save basemapper.update_java_11

 

MPJBaseMapper中的save basemapper.update_User_12

添加字段处理注解:@TableField

package com.kuang.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //对应数据库中的主键(主键策略:uuid、自增id、雪花算法、redis、zookeeper)
    @TableId(type = IdType.AUTO) //一旦手动输入id之后,就需要自己配置id了
    private Long id;
    private String name;
    private Integer age;
    private String email;

    //字段添加填充内容
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

设置处理器来处理这个处理字段注解:

当进行插入了,插入时填充策略会自动帮你,通过反射去读取哪些有注解对应的值,会自动帮你把createTime添加一个new Date的值

MyMetaObjectHandler类:

package com.kuang.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import sun.rmi.runtime.Log;

import java.util.Date;


@Slf4j //注解添加日志
@Component  //注解,加入spring容器创建对象
public class MyMetaObjectHandler implements MetaObjectHandler {
    //插入时的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill");
        //设置字段的值
        //setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    //更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill");
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

测试类:

package com.kuang;

import com.kuang.mapper.UserMapper;
import com.kuang.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class MybatisPlusApplicationTests {
    //测试,我们没有写任何CRUD,测试我们能不能使用
    //继承了BaseMapper,所有的方法都来自父类,我们也可以编写自己的扩展方法
    @Autowired
    private UserMapper userMapper;

    //查询测试
    @Test
    void contextLoads() {
        //参数是一个Wapper,条件构造器,类似sql我们要编写的条件,这里我们先不用 null,没有条件,查询所有的用户
        //查询全部用户
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    //插入测试
    @Test
    public void testInsert(){
        User user=new User();
        user.setId(6L);
        user.setName("狂神说Java2");
        user.setAge(3)
        int result=userMapper.insert(user);//这里我们没有设置id,帮助我们自动的生成id
        System.out.println(result);//受影响的行数
        System.out.println(user);//发现,id会自动回填
    }
    //更新测试
    @Test
    public void testUpdate(){
        User user=new User();
        //根据条件自动拼接动态sql
      

        //注意:updateById 但是参数是一个对象! 通过主键id进行更新
        int i=userMapper.updateById(user);
        System.out.println(i);
    }
}

测试插入:

MPJBaseMapper中的save basemapper.update_User_13

MPJBaseMapper中的save basemapper.update_MPJBaseMapper中的save_14

 测试更新:数据库update_time的时间发生了改变

MPJBaseMapper中的save basemapper.update_User_15

MPJBaseMapper中的save basemapper.update_mybatis_16