Эта статья является шестой в серии документов mybatis. Пожалуйста, посетите следующий URL-адрес, чтобы ознакомиться с первыми пятью статьями.
- Небольшая книга MybatisPlus, часть 1. Интеграция SpringBoot для быстрого добавления, удаления, изменения и проверки
- Небольшая книга MybatisPlus, часть 2. Применение и обзор условных конструкторов
- Небольшая книга MybatisPlus, часть 3 — Пользовательский SQL
- Небольшая книга MybatisPlus, часть 4. Пейджинг таблиц и запрос на пейджинг с раскрывающимся списком
- Маленькая книга MybatisPlus, часть 5 - Интенсивный режим активной записи
Mybatis Plus предоставляет нам три способа установки стратегии генерации первичного ключа. Их порядок приоритета: локальная аннотация > глобальная > по умолчанию (алгоритм снежинки). Давайте представим один за другим
Во-первых, стратегия генерации первичного ключа по умолчанию: алгоритм снежного цветка.
Если Mybatis Plus не настраивает какую-либо стратегию первичного ключа, по умолчанию используется алгоритм снежинки. Эта стратегия будет генерировать идентификатор первичного ключа в соответствии с алгоритмом снежинки. Тип первичного ключа — Long или String (в частности, база данных MySQL — BIGINT и VARCHAR). В стратегии используется метод nextId интерфейса IdentifierGenerator (класс реализации по умолчанию — Алгоритм снежинки DefaultIdentifierGenerator)
Алгоритм снежинки — это алгоритм генерации распределенного идентификатора Twitter с открытым исходным кодом, результатом которого является идентификатор длинного типа. Его основная идея: использовать 41 бит в качестве количества миллисекунд, 10 бит в качестве идентификатора машины (5-битный центр обработки данных, 5-битный идентификатор машины), 12 бит в качестве серийного номера в миллисекундах (это означает, что каждый узел может генерировать 4096 идентификаторов в миллисекунду). знаковый бит в конце, который всегда равен 0.
Во-вторых, настраиваемая стратегия первичного ключа
После mybatis-plus3.3.0 существует в основном пять стратегий генерации первичных ключей.
public enum IdType {
/**
* 数据库ID自增,数据库需要支持主键自增(如MySQL),并设置主键自增
*/
AUTO(0),
/**
* 该类型为未设置主键类型,默认使用雪花算法生成
*/
NONE(1),
/**
* 用户输入ID,数据类型和数据库保持一致就行
* <p>该类型可以通过自己注册自动填充插件进行填充</p>
*/
INPUT(2),
/* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
/**
* 全局唯一ID (idWorker),数值类型 数据库中也必须是数值类型 否则会报错
*/
ID_WORKER(3),
/**
* 全局唯一ID (UUID,不含中划线)
*/
UUID(4),
/**
* 字符串全局唯一ID (idWorker 的字符串表示),数据库也要保证一样字符类型
*/
ID_WORKER_STR(5);
}
3. Стратегия настройки локальных аннотаций
Мы устанавливаем стратегию первичного ключа для первичного ключа, используя метод аннотации, как
@TableId(type = IdType.AUTO)
private long userId;
В-четвертых, глобальная стратегия распределения
mybatis-plus:
global-config:
db-config:
id-type: auto
V. Расширенное использование
5.1. Использование стратегии идентификации пользовательского ввода INPUT
Среди них то, что нужно специально представить всем, это: Input (идентификатор ввода пользователя), есть два источника этого идентификатора
- Пользователь сам устанавливает идентификатор и устанавливает значение первичного ключа перед вставкой
- Некоторые базы данных с последовательностями, такие как Oracle, SQLServer и т. д. Для этих баз данных мы можем заполнить поле идентификатора через последовательность
Mybatis-Plus имеет следующие встроенные последовательности первичных ключей базы данных (если встроенная поддержка не соответствует вашим потребностям, вы можете реализовать интерфейс IKeyGenerator для расширения):
- DB2KeyGenerator
- H2KeyGenerator
- KingbaseKeyGenerator
- OracleKeyGenerator
- PostgreKeyGenerator
В качестве примера возьмем метод оракула, метод выглядит следующим образом: Сначала добавьте @bean
@Bean
public OracleKeyGenerator oracleKeyGenerator(){
return new OracleKeyGenerator();
}
Затем настройте последовательность первичного ключа для класса сущностей и укажите стратегию первичного ключа как IdType.INPUT.
@Data
@KeySequence(value = "SEQ_USER" , clazz = Long.class)
public class User {
@TableId(value = "ID",type = IdType.INPUT)
private Integer id;
Добро пожаловать, чтобы обратить внимание на мой блог, в нем много прекрасных коллекций
- Эта статья воспроизводится с указанием источника (должна быть ссылка, а не только текст):Блог Адетокунбо.
Если вы считаете это полезным, пожалуйста, поставьте лайк и поделитесь! Ваша поддержка - моя неиссякаемая творческая мотивация!. Кроме того, автор недавно выпустил следующий прекрасный контент, с нетерпением жду вашего внимания.