02-MybatisPlus的输出日志配置及主键策略

本文介绍了MybatisPlus的输出日志配置,只需在application.properties中设置mybatis-plus.configuration.log-impl为StdOutImpl。此外,详细讲解了MybatisPlus的主键策略,包括 AUTO 自动数据库ID自增,NONE 无状态,INPUT 插入前设置主键值,ASSIGN_ID 分配ID(默认雪花算法)和 ASSIGN_UUID 分配UUID。对于实体类的主键设置,示例展示了如何使用@TableId注解进行配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输出日志配置

mybatisPlus的输出日志配置,只需在application.properties文件中增加一行配置信息即可,如下所示:

# mybatis-plus输出日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

主键策略

mybatisPlus会默认自动为数据库表中的主键id字段,生成全局唯一id,该id使用雪花算法生成,枚举类型为ASSIGN_ID

在这里插入图片描述
在这里插入图片描述

主键类型

mybatisPlus指定的主键类型,自3.3.0版本之后,有以下几种:

  • AUTO(0):数据库id自增,唯一
  • NONE(1):无状态,该类型为未设置主键类型
  • INPUT(2):insert 前自行 set 主键值
  • ASSIGN_ID(3):分配 ID,分布式全局唯一,默认雪花算法实现,在不指定类型时,默认使用
  • ASSIGN_UUID(4):分配 UUID,分布式全局唯一,默认UUID方式实现
主键设置方式

1、对于AUTO类型,需要将数据库表的id字段设置为自增id,同时,在实体类中,对于id字段,要加上注解@TableId,指定类型。如下所示:

package springboot.mybatisplus.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

/**
 * @Description 实体类
 * @ClassName MybatisPlusUser
 * @Author yuhuofei
 * @Date 2022/3/21 17:41
 * @Version 1.0
 */
@Data
public class MybatisPlusUser {

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

    private String name;

    private Integer age;

    private String email;

}

2、其它类型,直接在实体类中,通过注解@TableId指定要使用的类型即可。当不指定时,默认使用 @TableId(type = IdType.ASSIGN_ID)

### MyBatis-Plus 插入数据后返回主键配置方法 在使用 MyBatis-Plus 进行数据插入操作时,可以通过多种方式来确保插入成功后能够自动返回生成的主键值。以下是几种常见的方式及其对应的代码示例。 #### 方法一:通过 `useGeneratedKeys` 和 `keyProperty` 配置 可以在 XML 映射文件中设置 `<insert>` 节点的相关属性,从而实现插入后返回主键的功能。具体来说: - 设置 `useGeneratedKeys="true"` 表明启用 JDBC 的自动生成主键功能。 - 使用 `keyProperty` 属性指定实体类中的哪个字段用于接收生成的主键值。 ```xml <insert id="saveReturnPK" parameterType="com.lichee.domain.Student" useGeneratedKeys="true" keyProperty="studentId"> INSERT INTO student_info(name, age) VALUES (#{name}, #{age}) </insert> ``` 上述代码片段展示了如何利用 `useGeneratedKeys` 和 `keyProperty` 来完成主键返回的操作[^2]。 --- #### 方法二:基于注解的方式 如果项目更倾向于采用注解驱动开发,则可以借助 MyBatis-Plus 提供的注解机制来简化配置过程。例如,在实体类上定义主键字段时,可加入如下注解: - 对于 MySQL 数据库,默认情况下会使用自增策略(AUTO_INCREMENT),此时只需标注 `@TableId(type = IdType.AUTO)` 即可。 ```java import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class Student { @TableId(type = IdType.AUTO) private Long studentId; // Getter and Setter methods... } ``` 此段代码表明当执行保存逻辑时,框架会依据数据库表结构自动填充该对象实例的 `studentId` 值[^1]。 对于其他类型的数据库(如 Oracle 或 PostgreSQL),可能还需要额外提供序列支持或者 UUID 类型作为唯一标识符来源。这时可以选择手动赋值模式 (`IdType.INPUT`) 并配合业务层处理传参问题[^4]。 --- #### 方法三:程序化控制事务提交并验证结果 除了以上两种静态声明式的解决方案外,还可以编写一段封装好的 DAO 接口调用函数以动态捕获新记录 ID 。下面是一个简单的例子演示了整个流程: ```java @Service public class StudentService { @Autowired private SqlSession sqlSession; public int insertStudentAndGetId(Student student){ try{ int resultCount = sqlSession.insert("insertStudentCacheId", student); sqlSession.commit(); if(resultCount > 0 && null != student.getStudentId()){ System.out.println("Inserted successfully with generated PK:" + student.getStudentId()); } return resultCount; } finally { if(null != sqlSession){ sqlSession.close(); } } } } ``` 这里的关键在于确认 `student` 实体对象内部已经更新了最新的主键信息后再做进一步判断或打印日志输出[^3]。 --- ### 总结 综上所述,MyBatis-Plus 支持多样的插件扩展以及灵活易用的设计理念使得开发者可以根据实际需求选取最适合自己的方案去解决类似场景下的技术难题。无论是基础版还是高级定制版本都能满足日常工作中遇到的各种挑战!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值