Mybatis-Flex核心功能之@Id
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;
}

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

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());

6、覆盖内置主键生成器
// 覆盖内置主键生成器
MyUUIDKeyGenerator myUUIDKeyGenerator = new MyUUIDKeyGenerator();
KeyGeneratorFactory.register(KeyGenerators.uuid,myUUIDKeyGenerator);
Mybatis-Flex核心功能之@Id的更多相关文章
- 掌握Mybatis的核心配置文件
一.配置文件结构 MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和影响MyBatis行为的一些属性. 该配置文件的元素 ...
- Spring 核心功能演示
Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot, ...
- 源码分析 | 手写mybait-spring核心功能(干货好文一次学会工厂bean、类代理、bean注册的使用)
作者:小傅哥 博客:https://bugstack.cn - 汇总系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言介绍 一个知识点的学习过程基本分为:运行helloworld ...
- 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验
1.MyBatis-Plus入门开发及配置 1.1.MyBatis-Plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变, ...
- Chrome扩展开发之四——核心功能的实现思路
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- ES6,ES2105核心功能一览,js新特性详解
ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...
- Shiro 核心功能案例讲解 基于SpringBoot 有源码
Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...
- MyBatis:CRUD功能
在前面已经自动生成了mapper和pojo,接下来我们实现mybatis的CRUD功能,先新建service.controller层的方法. 这里的sid是一个开源的id生成类,写完后,我们还需要在启 ...
- MyBatis的核心配置、动态sql、关联映射(快速总结)
MyBatis的核心对象和配置 #1. SqlSessionFactory对象: 单个数据库映射关系经过编译的内存镜像: 作用:创建SQLSession对象. //读取配置文件 InputSteam ...
- Spring框架的IOC核心功能快速入门
2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...
随机推荐
- 在Windows下用VScode构造shell脚本的IDE
在linux系统中,大家可以很轻松的开发.调试shell脚本.但是,对于不熟悉linux系统 的小白或者想在Windows下开发shell脚本的人来说,这就有点不友好了.本篇文章就 教大家,在Wind ...
- Code Llama:Llama 2 学会写代码了!
引言 Code Llama 是为代码类任务而生的一组最先进的.开放的 Llama 2 模型,我们很高兴能将其集成入 Hugging Face 生态系统!Code Llama 使用与 Llama 2 相 ...
- 开源通用型流式大数据统计系统XL-LightHouse介绍
概述 XL-LightHouse是针对互联网领域繁杂的流式数据统计需求而开发的一套集成了数据写入.数据运算.数据存储和数据可视化等一系列功能,支持大数据量,支持高并发的[通用型流式大数据统计平台]: ...
- android模拟器推荐
最近装了个海马模拟器用来调试cocos2dx-lua游戏. 安装完之后发现, 我之前装的virtual box被替换掉了, 因为海马模拟器要安装它自己匹配版本的virtual box, 所以我之前的装 ...
- Github的一个奇技淫巧
背景 前段时间给 VictoriaLogs 提交了一个 PR: https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4934 本来一切都很顺 ...
- 位图(bitmap)原理以及实现
大家好,我是蓝胖子,我一直相信编程是一门实践性的技术,其中算法也不例外,初学者可能往往对它可望而不可及,觉得很难,学了又忘,忘其实是由于没有真正搞懂算法的应用场景,所以我准备出一个系列,囊括我们在日常 ...
- 「codeforces - 1344D」Résumé Review
link. 有点狗,但还算个好题. 设定 \(f_i(x)=a_ix-x^3\),\(\Delta_i(x)=f_i(x)-f_i(x-1)\),可以洞察到 \(\Delta_i(x)\) 在正自然数 ...
- Vue-进阶:路由及elementUI组合开发
Vue-router路由 什么是vue-router? 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果.当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服 ...
- 造轮子之asp.net core identity
在前面我们完成了应用最基础的功能支持以及数据库配置,接下来就是我们的用户角色登录等功能了,在asp.net core中原生Identity可以让我们快速完成这个功能的开发,在.NET8中,asp.ne ...
- Util应用框架Web Api开发环境搭建
要使用Util应用框架开发项目,首先需要搭建合适的开发环境. 迈出第一步,对于很多.Net新人可能并不简单. 如果你对.Net环境并不熟悉,请尽量按照本文档进行操作. 操作系统 请安装 Windows ...