对象与表映射不上时怎办?MyBatis-Plus注解帮你

学习要求


良好的java基础, 熟悉SpringBoot框架,熟悉Mybatis框架

教程目标


了解并掌握MyBatis-Plus常用注解的使用

视频教程

MyBatisPlus实战教程与开发建议

常用注解

@TableName

作用:默认情况下,实体名与表名一致,当不一致时,使用该注解显示指定表名

核心属性:value

案例:

@TableName("t_employee")
public class Employee {
  //.....
}

@TableField

作用:默认情况下,实体属性名与列名一致,当不一致时,使用该注解显示指定列名

核心属性:value, exist

案例:


public class Employee {
    @TableField(value="employename")
    private String name;
}

如果实体类中有多余的属性,且没有跟表中某一列映射,此时需要使用exist属性进行排除,这样mybatis-plus在拼接SQL时,放弃这个属性的解析

public class Employee {
    @TableField(exist = false)
    private Department dept;
}

@TableId

作用:默认情况下,没有明确指定表的主键,使用雪花算法生成一个唯一的long类型的id

核心属性:value, type

案例:

public class Employee {
    @TableId(value="id", type=IdType.AUTO)
    private Long id;
}

IdType的类型有:

IdType.AUTO   :数据库ID自增
IdType.NONE   :无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
IdType.INPUT   :insert前自行set主键值
IdType.ASSIGN_ID    :分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
IdType.ASSIGN_UUID :分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法)

@Version

作用:只有涉及到乐观锁操作时使用

核心属性:value

案例:

1>在实体类上定义一个作为乐观锁操作的version字段

public class Employee {
    @Version
    private int version;

}

此时表中应该有一个与之对应的列,version

2>配置类中配置支持拦截器乐观锁

@Bean
public MybatisPlusInterceptor optimisticLockerInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    return interceptor;
}

3>正常执行更新方法

@Test
public void testUpdate(){
    Employee employee = new Employee();
    employee.setId(1418059280658907137L);
    employee.setAdmin(1);
    employee.setAge(18);
    employee.setDeptId(1L);
    employee.setEmail("zhangsan@163.com");
    employee.setName("zhangxiaosan");
    employee.setPassword("111");
    employeeMapper.updateById(employee);
}

观察打印出来的SQL

UPDATE employee SET name=?, password=?, email=?, age=?, admin=?, dept_id=?, version=? WHERE id=? AND version=?

mybatis-plus会自动讲乐观锁逻辑加载到sql中

@TableLogic

作用:逻辑删除注解,一般开发不建议硬删除数据(从数据库删除),建议使用软删除(数据不删除仅仅改数据状态,列表时做数据过滤)

核心属性:value, delval

案例:

1>在实体类中定义一个控制删除的属性

public class Employee {
    @TableLogic(value = "1", delval = "0")
    private int del;
}

value:表示未删除的数据状态

delval:表示删除之后的数据状态

此时表中应该有一个与之对应的列,del

2>正常执行删除方法

@Test
public void testDelete(){
    employeeMapper.deleteById(1L);
}

原先删除语法被转行成更新语法:

UPDATE employee SET del=0 WHERE id=? AND del=1

除了上的几个常用的注解,还有几个不常用:@EnumValue  @OrderBy  @KeySequence @InterceptorIgnore 等,这些大家可以研究一下。

到这,MyBatis-Plus2-常用注解就介绍完了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis-Plus提供了一些常用的注解,可以助简化开发过程和提高开发效率。其中常用的注解包括: 1. @TableName注解:用于指定实体类对应的数据库表名。可以在实体类的类级别上使用,例如:@TableName("my_table")。 2. @TableId注解:用于指定实体类的主键字段。可以在主键字段上使用,例如:@TableId(value = "id", type = IdType.AUTO)。 3. @TableField注解:用于指定实体类的字段与数据库表字段的映射关系。可以在字段上使用,例如:@TableField("name")。 4. @Version注解:用于指定实体类的乐观锁字段。可以在乐观锁字段上使用,例如:@Version。 5. @EnumValue注解:用于指定实体类枚举字段的数据库存储值。可以在枚举字段上使用,例如:@EnumValue("1")。 这些注解可以助开发人员简化代码编写,减少了手动编写XML的工作量,提高了开发效率。通过使用这些注解,可以更方便地进行数据库操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mybatis-plus常用注解](https://blog.csdn.net/m0_61682705/article/details/125348601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MyBatis-Plus——详解常用注解](https://blog.csdn.net/Huang_ZX_259/article/details/122516135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪飞yes

我对钱没兴趣~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值