[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略
常用注解
@TableName
- 设置实体类所对应的表名
如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗?
我们可以通过配置文件来解决这个问题:
@TableId
- 将属性所对应的字段指定为主键
@TableId的value属性
@TableId的type属性
/** Copyright (c) 2011-2022, baomidou (jobob@qq.com).** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.baomidou.mybatisplus.annotation;import lombok.Getter;/*** 生成ID类型枚举类** @author hubin* @since 2015-11-10*/
@Getter
public enum IdType {/*** 数据库ID自增* <p>该类型请确保数据库设置了 ID自增 否则无效</p>*/AUTO(0),/*** 该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)*/NONE(1),/*** 用户输入ID* <p>该类型可以通过自己注册自动填充插件进行填充</p>*/INPUT(2),/* 以下3种类型、只有当插入对象ID 为空,才自动填充。 *//*** 分配ID (主键类型为number或string),* 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)** @since 3.3.0*/ASSIGN_ID(3),/*** 分配UUID (主键类型为 string)* 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))*/ASSIGN_UUID(4);private final int key;IdType(int key) {this.key = key;}
}
将生成id的算法改成自增算法(默认雪花算法)
常用的主键策略:
值 | 描述 |
---|---|
IdType.ASSIGN_ID(默认) | 基于雪花算法的策略生成数据id,与数据库id是否设置自增无关 |
IdType.AUTO | 使用数据库的自增策略,注意,该类型请确保数据库设置了id自增,否则无效 |
通过全局配置配置主键生成策略
@TableField
- 指定属性所对应的字段名
可以运行,mybatisplus默认驼峰命名法
@TableLogic
逻辑删除
- 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数据
- 逻辑删除:假删除,将对应数据中代表是否被删除字段的状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
- 使用场景:可以进行数据恢复
实现逻辑删除
step1 数据库中创建逻辑删除状态列,设置默认值为0
step2 实体类中添加逻辑删除属性
step3:测试
/*** 通过多个id实现批量删除*/@Testpublic void testDelete02(){List<Long> list = Arrays.asList(1L, 2L, 3L);int result = userMapper.deleteBatchIds(list);System.out.println("result = "+result);}
测试删除功能,真正执行的是修改
UPDATE t_user SET is_deleted=1 WHERE id=? AND is_deleted=0
测试查询功能,被逻辑删除的数据默认不会被查询
SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0
查询所有数据,也查不到删除的数据了
/*** 查询所有数据*/@Testpublic void testSelect02(){List<User> users = userMapper.selectList(null);users.forEach(System.out::println);}
[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略相关推荐
- java mysql 主键生成策略_主键生成策略
1.Assigned(常用) Assigned方式由程序生成主键值,并且要在save()之前指定,否则会抛出异常. 特点:逐渐的生成值完全由用户决定,于底层数据库无关.用户需要维护主键值,在调用ses ...
- Mybatis-Plus主键生成策略详解
文章目录 前言 一.官网 二.主键注解@TableId说明 1.源码 2.作用 3.使用 三.主键生成策略-IdType枚举说明 1.源码 2.说明 3.全局设置 三.ID生成器介绍 1.Identi ...
- MyBatisPlus主键生成策略
简介 我们可以通过 @TableId 注解的 type 属性来设置主键 id 的增长策略,一共有如下几种主键策略,可根据情况自由配置. AUTO(数据库 ID 自增) 对于像 MySQL 这样的支持主 ...
- JPA实体注解与hibernate主键生成策略
JPA实体注解与hibernate主键生成策略 用hibernate注解开发项目,对于主键的生成策略有些模糊,下面是从新浪网里面看到的一篇关于hibernate注解以及主键生成策略的文章,值得一看: ...
- 常用Hibernate 主键生成策略(徐瑞文)
ORM映射基本原理 1. 基于相同实体类和表,实现相互映射,类的对象对应了表中的记录,不同对象对应不同的记录,不同的记录对应不同的对象 2. 表中不同的记录通过主键来区分,不同的对象通过对象id来区分 ...
- 【吐血整理】Hibernate常用的主键生成策略的原理、优缺点、应用场合
// 此文由老猫烧须整理,其中加上本人的使用教程,如有误,欢迎指出 // 仅作学习以及备份使用,转载如带有本人整理资料请注明出处 // 欢迎大家留言交流 简介版: increment:代理主键,适合于 ...
- mysql修改主键生成策略信息_常用Hibernate 主键生成策略
1.Assigned Assigned方式由程序生成主键值,并且要在save()之前指定否则会抛出异常 特点:主键的生成值完全由用户决定,与底层数据库无关.用户需要维护主键值,在调用session.s ...
- MybatisPlus:SQL语句打印、SQL分析、自定义主键值策略填充(IdType.INPUT)、动态表名、多租户、枚举、类型处理器、连表自定义SQL(使用wrapper)
文章目录 1. 简单使用以及配置 - 带分页配置 2. 用法 2.0 Wrapper属性 2.1 @TableId - 自定义主键生成策略 2.2 @TableField - 自定义字段值填充 2.3 ...
- 剖析Hibernate主键生成几种常用方式
剖析Hibernate主键生成几种常用方式 2009-09-28 10:52 佚名 IT168 字号:T | T 这里介绍Hibernate主键生成几种常用方式,由Hibernate根据不同的数据库方 ...
最新文章
- NLP工程师平均月薪3W起,如何从文本情感分析入坑NLP?
- 大规模业务服务器开发总结
- Java语言中小数的取整
- 职业梦想是计算机的英语作文,我的梦想职业英语作文
- 【世界上最优秀的逆向分析工具】IDA Pro6.1绿色版
- 聊聊Synchronized
- mvc html.displayfor,我想了解@ Html.DisplayFor(modelItem = item.FirstName)中的lambda表达式...
- Spring RabbitMQ使用
- kubectl 创建pvc_动态挂载云盘(PVC)
- access实例_西门子PLC1200组态王跟Access数据库-⑥组态王变量
- Docker Images for MySQL Cluster
- python加密解密算法_DES的加密与解密算法(Python实现)
- BDD(行为驱动开发)
- python车牌识别系统开源代码_TensorFlow车牌识别完整版代码(含车牌数据集)
- c语言记账系统源程序,C语言会计记账管理系统.doc
- linux 系统如何启动服务,如何查看和停止Linux启动的服务
- Matlab GUI界面设计
- 中国女性出席1899年伦敦世界妇女大会
- InstallShield Premier,复杂的多服务器应用程序
- KioptrixVM3-writeup
热门文章
- Android Studio开发基础之Activity之间参数传递
- C#将dataGridView中显示的数据导出到Excel(大数据量超实用版)
- Android之奔溃提示com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap
- Windows之Fiddler抓HTTP和HTTPS请求
- LeetCode之Valid Parentheses
- sql between...and 用法(mysql)
- python里split_python中split()的用法
- 中国最险六大寺庙,最后一座至今无人登临
- 你所阅读的,决定你是什么样的人
- mysql8 修改权限_MySQL8修改重置root密码,远程连接权限设置