ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MyBatis-Plus初解

2020-11-29 22:03:41  阅读:290  来源: 互联网

标签:metaObject id public Date Plus 初解 MyBatis 主键 fill


MyBatis-Plus

使用步骤

  1. 创建实体类

  2. 创建mapper接口xml配置

    //BaseMapper会自动将mapper与实体类关联,需要在配置类中使用@MapperScan扫描
    @Repository //加Repository会交给IoC管理
    public interface UserMapper extends BaseMapper<User> {
    }
    
  3. 在配置类上开启@MapperScan扫描,指定mapper接口的位置

  4. 使用mapper接口操作数据库

    @SpringBootTest
    class MybatisPlusApplicationTests {
        @Autowired
        public UserMapper userMapper;
        @Test
        void contextLoads() {
            List<User> users = userMapper.selectList(null);
            System.out.println(users);
        }
    
    }
    

配置输出日志

#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

主键类型

当不设置主键时,会为数据库插入id值默认为:全局唯一id。还会将MyBatis-Plus生成id赋值给实体类。

策略详见

  1. 自动增长,当一张表记录达到一定数据量,进行分表操作,分表操作需要知道上一张表的最后一个id值。
  2. UUID:生成通用唯一识别码。随机生成,无法排序。
  3. redis生成
  4. 自带生成snowflake算法,生成19位的值

指定主键类型

 @TableId(value = "id",type = IdType.ASSIGN_ID)

type的值

描述
AUTO数据库ID自增
NONE无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
INPUTinsert前自行set主键值
ASSIGN_ID分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0)
ASSIGN_UUID分配UUID,主键类型为String(since 3.3.0)

自动填充

不用通过对象的setter方法对值进行设置,通过实现接口对值进行填充。例如设置创建修改时间。

  1. 在实体类上使用TableFiled注解指定属性fill及什么时候触发fill。

    @TableField(fill = FieldFill.INSERT)//该字段首次insert时触发
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)//insert和更新时都会触发
    private Date updateTime;
    
  2. 需要实现MetaObjectHandle接口来实现fill的具体操作。

    @Component //交给容器才会生效?
    public class MyMetaObjectHandler implements MetaObjectHandler {
        //insert时触发的操作,metaObject表示表的元信息如字段名等
        @Override
        public void insertFill(MetaObject metaObject) {
            this.setFieldValByName("createTime",new  Date(),metaObject);
            this.setFieldValByName("updateTime",new  Date(),metaObject);
        }
    	//update时触发的操作
        @Override
        public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateTime",new  Date(),metaObject);
        }
    }
    
    

标签:metaObject,id,public,Date,Plus,初解,MyBatis,主键,fill
来源: https://blog.csdn.net/qq_41177704/article/details/110355216

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有