首页 > 其他分享 >Mybatis-Flex核心功能之@Id

Mybatis-Flex核心功能之@Id

时间:2023-10-12 23:33:07浏览次数:36  
标签:Flex keyConfig KeyType 生成器 主键 Mybatis Id keyType

1、是什么?

在 Entity 类中,MyBatis-Flex 是使用 @Id 注解来标识主键的

2、怎么玩?

public @interface Id {

    /**
     * ID 生成策略,默认为 none
     *
     * @return 生成策略
     */
    KeyType keyType() default KeyType.None;

    /**
     * 若 keyType 类型是 sequence, value 则代表的是
     * sequence 序列的 sql 内容
     * 例如:select SEQ_USER_ID.nextval as id from dual
     *
     * 若 keyType 是 Generator,value 则代表的是使用的那个 keyGenerator 的名称
     *
     */
    String value() default "";


    /**
     * sequence 序列执行顺序
     * 是在 entity 数据插入之前执行,还是之后执行,之后执行的一般是数据主动生成的 id
     *
     * @return 执行之前还是之后
     */
    boolean before() default true;
}

image

3、KeyType属性

@Id(keyType = KeyType.Generator, value = "flexId")
//    @Id(keyType = KeyType.Generator, value = "uuid")
    private Integer id;

image

4、设置全局主键生成器策略

// 设置全局主键生成策略
FlexGlobalConfig.KeyConfig keyConfig = new FlexGlobalConfig.KeyConfig();
keyConfig.setKeyType(KeyType.Generator);
keyConfig.setValue(KeyGenerators.flexId);
keyConfig.setBefore(true);
flexGlobalConfig.setKeyConfig(keyConfig);

值得注意的是,全局主键生成器的策略和局部配置@Id是不冲突的,当配置的局部@Id策略,以局部配置的优先

5、自定义主键生成器

  • 定义
package com.ly.keygen;

import com.mybatisflex.core.keygen.IKeyGenerator;

import java.security.SecureRandom;

/**
 * 自定义id生成器
 *
 * @author ly (个人博客:https://www.cnblogs.com/ybbit)
 * @date 2023-10-12  23:02
 * @tags 喜欢就去努力的争取
 */
public class HashCodeKeyGenerator implements IKeyGenerator {
    @Override
    public Object generate(Object entity, String keyColumn) {
        return entity.hashCode() + new SecureRandom().nextInt();
    }
}
  • 注册
// 设置自定义主键生成策略
        KeyGeneratorFactory.register("hashCode",new HashCodeKeyGenerator());

image

6、覆盖内置主键生成器

// 覆盖内置主键生成器
        MyUUIDKeyGenerator myUUIDKeyGenerator = new MyUUIDKeyGenerator();
        KeyGeneratorFactory.register(KeyGenerators.uuid,myUUIDKeyGenerator);

标签:Flex,keyConfig,KeyType,生成器,主键,Mybatis,Id,keyType
From: https://www.cnblogs.com/ybbit/p/17735834.html

相关文章

  • Kubernetes:根据进程 Pid 获取 Pod 名称
    前言在管理Kubernetes集群的过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个容器里的进程。有没有办法可以根据进程PID快速找到Pod名称呢?解决假设现在有一个prometheus进程的PID是14338:要获取容器的ID,可以查看PID对应......
  • 反汇编工具IDAPro简介
    目录一、前言二、下载三、安装四、简单使用第一步:打开IDAPro32软件第二步:新建一个文件第三步:选择一个exe进行分析第四步:装载PE文件第六步:显示运行结果第七步:查看源代码第八步:关闭IDAPro并保存数据库文件参考一、前言IDAPro(InteractiveDisassemblerProfessional)简称“......
  • Meet in the middle
    meetinthemiddleinoiwiki。meetinthemiddle,也可以叫折半搜索,是一种用来优化爆搜的方式。适用于一些数据范围比较小可以爆搜——但还没有小到可以直接搜的程度。可以让复杂度从\(O(a^b)\)降到\(O(a^{b/2})\)适用的题目一般与异或有关(才能拆成两半搜)。P2962[USACO0......
  • [Unraid 系列 v6.10+] 5 莫名死机处理
    说明目前,我的UNRAID系统版本为6.12.4,每隔一两周就会死机,网络服务(PING等)、SSH、WebGUI都会终止。现就有关问题进行处理。现在网上有几种说法:Docker分配的img文件过小,一旦需要超出又不满足条件,就会出现该问题。Docker容器分配的网络为macvlan而非ipvlan,而我已......
  • [Unraid 系列 v6.10+] 4 UNRAID Flash 备份目录记录
    说明UNRAID/boot一般为以下目录:root@unraid:/boot#tree-L1.├──EFI├──config├──logs├──syslinux└──......其中./EFI、./logs、syslinux为系统文件夹,一般不涉及用户数据。./config为具体用户数据配置文件。DockerCompose自建STACK......
  • Solidworks流体仿真插件安装及案例分析
    Solidworks流体仿真插件安装及案例分析1流体仿真插件的安装如图1所示,安装时勾选SolidworksFlowSimuation模块,一路“下一步”安装完毕。完成安装后打开软件,图2所示,点击Solidworks插件按钮,找到SolidworksFlowSimuation按钮,双击可打开说明插件安装成2案例分析2.1案例背景......
  • MyBatis使用细节
    一、别名在核心配置文件中使用<typeAliases>标签配置别名。别名可以用于映射文件中的resultType属性。1.直接配置别名<typeAliases><!--type:类型全限定路径alias:别名名称--><typeAliastype="com.gsy.pojo.People"alias="p"></typeAlias>......
  • mybatis动态方法
    一、首先创建数据库二、创建项目工程先导入文件编写配置文件db.propertiesdriver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/dbusername=rootpassword=rootconfig.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybat......
  • Android 外置存储卡无法使用FileProvider问题
    解决办法:<?xmlversion="1.0"encoding="utf-8"?><paths><external-files-pathname="my_images"path="."/></paths>修改为<?xmlversion="1.0"encoding="utf-8&......
  • 实时美妆魅力尽显:探索相芯轻美妆SDK功能及集成方法(Android)
    随着人工智能技术的不断发展,相芯SDK的轻美妆功能为用户带来了一种全新的美妆体验。轻美妆是妆容和美妆的结合,使用比较轻薄的妆效使轻美妆效果更佳。这一功能集成了多项先进技术,通过人脸识别、图像处理和分割等技术,实现了实时美妆效果的展示和应用。本文将深入介绍相芯SDK轻美妆功能......