MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis
的基础上只做增强不做改变,为简化开发、提高效率而生。 润物无声 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。 效率至上
只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。 丰富功能 热加载、代码生成、分页、性能分析等功能一应俱全。

准备工作

  1. 创建实体类User以及数据库user字段
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {/*** @TableId mybatis-plus 提供的主键策略,我们可以使用指定主键值的定义方式以及使用那种算法* 不写的话默认使用雪花银算法*/@TableId(type = IdType.ASSIGN_ID)private Long id;private String name;private Integer age;private String email;/*** Mp设置自动填充** @TableField(fill = FieldFill.INSERT) 表示插入数据时填充* 同理有更新,插入,查询时,自动填充数据* 其次还需要实现一个接口MetaObjectHandler来编写插入,更新执行的方法*/@TableField(fill = FieldFill.INSERT)private Date createTime;@TableField(fill = FieldFill.INSERT_UPDATE)private Date updateTime;/*** 实体类属性加上注解@Version,指明是一个版本号属性* 插入时默认为版本号为1*/@Version@TableField(fill = FieldFill.INSERT)private Integer version;/*** 逻辑删除标识符,默认插入填充为1* 0,未删除,1已删除* 重点此注解@TableLogic,标识此属性为逻辑删除标识符* 查询时mp会默认加上deleted=0的条件*/@TableLogic@TableField(fill = FieldFill.INSERT)private Integer deleted;
}
  1. 常见userMapper接口,继承Mp的BaseMapper<实体类类型>
@Repository
public interface UserMapper extends BaseMapper<User> {}

插入操作

直接调用userMapper的insert方法插入实体类

//添加
@Test
public void testAdd() {User user = new User();user.setName("lucy");user.setAge(20);user.setEmail("1243@qq.com");int insert = userMapper.insert(user);System.out.println(insert);
}

主键策略

我可以在我们的实体类的主键Id上使用注解@TableId表示此字段为表主键,使用Type属性指定主键设置填充的策略,Mybatis-plus默认使用的是(即我们不使用注解修饰我们的主键ID)雪花银算法

@TableId(type = IdType.ASSIGN_ID)
private String id;

AAIGN_ID(雪花算法)

MyBatis-Plus默认的主键策略是:ASSIGN_ID (使用了雪花算法)

@TableId(type = IdType.ASSIGN_ID)
private String id;

雪花算法:分布式ID生成器
雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

AUTO自增策略

需要在创建数据表的时候设置主键自增
实体字段中配置 @TableId(type = IdType.AUTO)

 @TableId(type = IdType.AUTO)private Long id;

全局主键策略设置

要是想要配置全局的主键策略,可以在配置文件中写入全局主键策略

#全局设置主键生成策略
mybatis-plus.global-config.db-config.id-type=auto

01-mybatis-plus插入操作及主键策略相关推荐

  1. MyBatis返回插入的数据主键

    在MyBatis开发过程中,我们经常需要解决一个问题:当插入一条数据的时候,我在接下来的操作中我需要知道刚刚插入的是哪条数据,这样我们需要获取插入数据的主键:如何在MyBatis中解决这个问题呢? 首 ...

  2. Mybatis批量插入,返回主键ID不成功,巨坑

    一.场景说明 批量插入,返回主键ID报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibati ...

  3. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  4. 3、JavaWeb中Service层的作用、MyBatis的重要组件、mybatis-config.xml中的别名映射、properties配置、#{}和${}的区别、获取插入数据的主键值

    文章目录 1.Service层的作用 2.MyBatis重要组件 Resources SqlSessionFactoryBuilder SqlSessionFactory SqlSession 针对上 ...

  5. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

  6. MyBatis的插入后获得主键的方式

    需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法: 在mapper中指定keyProperty属性,示例如下: <insert id=" ...

  7. mybatis添加记录时返回主键id

    参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作. 在使用mybatis作为ORM组件时,可以很方便地达到这 ...

  8. MyBatis insert 获取自增主键

    1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...

  9. mybatis获取mysql自增主键_Mybatis获取数据库自增主键

    一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样 //测试添加 Employee employee = new Employee(null, "jerry4",n ...

最新文章

  1. 小型工作室创业项目_为什么新开发人员应该在小型创业公司工作
  2. 第二章 实验设计的考虑因素
  3. blockingdeque java_Java BlockingDeque解决生产者与消费者问题
  4. adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...
  5. java改变变量编码方式_Java 10将如何改变您的编码方式
  6. python rest api 框架_Python Eve REST API框架
  7. 信贷评分卡的顶层设计思路
  8. linux 常用命令练习
  9. 都是第一,3143亿背后科技公司贡献了多少?
  10. python经典程序-python经典趣味24点游戏程序设计
  11. 调制方式性能比较--BER,频带效率的极限
  12. 汽车品牌查询及车型大全查询
  13. wps里的超链接PDF打不开_PDF转Word都可以怎样操作?
  14. 零基础选择前端还是后端?
  15. 零钱模拟器微信小程序源码下载
  16. layUI自定义列表每页条数
  17. java string占用内存_Java中String到底占用多大的内存空间?
  18. Faceless —— 开源的匿名社交应用
  19. 牛客网NC77-20.7.23-dp(动态规划?)
  20. blogbus博客搬家之图片迁移

热门文章

  1. Python爬取南京地铁微博发布客流数据并进行分析
  2. 论文投稿指南——什么是SCI,SSCI ,CSSCI
  3. python亚马逊运营工具_GitHub - WuLC/AmazonRobot: Amazon商品引流的 python 爬虫
  4. 使用示波器测量导线长度
  5. matlab与epanet对接,矿井防尘供水管网水力水质模拟实现方法与应用
  6. 多闪、马桶、聊天宝三帆小舟如何进击航空母舰【微信】
  7. 什么是摩尔定律,摩尔定律是否还能继续生效?
  8. C++编程思想 第2卷 第11章 并发 线程间协作 用队列解决线程处理的问题 适当地进行烘烤
  9. 关于山大计科转专业的二三事
  10. 从小白程序员到大厂高级技术专家我看过哪些书籍?