zoukankan      html  css  js  c++  java
  • mybatis-plus-增改,自动填充

    1.主键生成策略

    配置主键自增:

    ①实体类字段加上(@TableId(type=IdType.AUTO))

    ②数据库字段一定要自增

    其余的源码解释:

    public enum IdType{
        AUTO(0),//自增
        NONE(1),//未设置主键
        INPUT(2),//手动输入
        ID_WORK(3),//默认全局唯一id
        UUID(4),//全局唯一id  uuid
        ID_WORK_STR(5);//字符串表示法
    }

    2.插入操作

    public void testInsert(){
            User user=new User();
            user.setName("zhangsan");
            user.setAge(12);
            user.setEmail("123@abc.com");
            int insert = userMapper.insert(user);//自动生成id
            System.out.println(user);
        }

    3.更新操作

    public void testUpdate(){
            //通过条件自动拼接sql  UPDATE user SET age=?, email=? WHERE id=? 
            User user=new User();
            user.setId((long)1);
            user.setEmail("1234@abc.com");
            //参数是一个对象
            int update = userMapper.updateById(user);
            System.out.println(update);
        }

    4.自动填充

    创建时间,修改时间,这种操作一般都是自动填充。

    阿里开发手册:所有数据库表gmt_create,gmt_modified几乎所有表都要配置上,而且需要自动化。

    方式一:数据库级别(给字段赋初值)

    方式二:代码级别

    public enum FieldFill{
        DEFAULT,
        INSERT,
        UPDATE,
        INSERT_UPDATE;
    }

    ①实体类字段属性上增加注解

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

    ②编写处理器来处理这个注解

    新建处理类,继承接口MetaObjectHandler,重写填充方法

    package com.example.demo.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 java.util.Date;
    @Slf4j
    @Component//一定不要忘记把处理器加到IOC容器中
    public class MyMetaObjectHandler implements MetaObjectHandler {
        //插入时的填充策略
        @Override
        public void insertFill(MetaObject metaObject) {
            log.info("start insert fill ...");
            //setFieldValByName(String fieldName,Object fieldValue,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);
        }
    }

    测试插入

    @Test
        public void testInsert(){
            User user=new User();
            user.setName("zhangsan");
            user.setAge(12);
            user.setEmail("123@abc.com");
            int insert = userMapper.insert(user);//自动生成id
            System.out.println(user);
        }

    所有博客均为自己学习的笔记。如有错误敬请理解。
  • 相关阅读:
    今天刚开通博客,很开心
    ZYNQ双核AMP开发详解(USE_AMP -DUSE_AMP=1 含义和作用详解)
    赛灵思机器学习套件(ML Suite) v1.4 DPU, DNNK
    petalinux add pre-build application to rootfs compile faliure solution
    如何用SDK生成device tree
    Zynq UltraScale+ MPSoC device tree 中 CCF中 clock output数字映射表
    Zynq ZC702平台 QSPI + eMMC实现
    Zynq ZC702平台 Linux + Baremetal AMP实现(一)【快速启动CPU1】
    第五章 任务执行
    第四章 闭锁
  • 原文地址:https://www.cnblogs.com/tangtang-benben/p/14477502.html
Copyright © 2011-2022 走看看