MybatisPlus常用注解分析

目录

一、MybatisPlus获取数据库信息的原理

 二、常用注解

1.概述

2.@TableName

3.@TableId

4.@TableField


一、MybatisPlus获取数据库信息的原理

MybatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

在使用MybatisPlus时,要继承BaseMapper<?>,其中“?”为对应数据库表的实体类,比如数据库中有名为user的表,则它对应的实体类为User,使用MybatisPlus时,应继承BaseMapper<User>,如图:

接下来MybatisPlus将根据User实体类的信息作为数据库表信息。

其中遵循以下约定:

  1. 类名驼峰转下划线作为表名。比如有一个实体类叫做UserInfo,则转换成数据库表名为user_info(windows下Mysql数据库表名不区分大小写)
  2. 名为id的字段作为主键。
  3. 变量名驼峰转下划线作为表的字段名。比如updateTime变量转为表的的字段名为update_time。

根据这三个约定,此时MybatisPlus根据User类的信息,知道数据库中有一张名为user的表,其中的id字段为表的主键,其他字段还有:username、password、phone、info、status、balance、creat_time、update_time。

MybatisPlus根据这些信息,就可以帮我们生成sql语句,我们直接调用它提供的方法即可。

以上就是MybatisPlus自动帮我们实现增删改查的原理。

 二、常用注解

1.概述

在一中所讲的原理是遵循了约定大于配置的原则。也就是说,只要给出的实体类满足约定,就不需要我们进行手动配置,MybatisPlus会自动帮我实现增删改查功能。

但是如果我们的实体类不完全符合约定,就需要我们进行手动配置,自己去定义表名、字段名和主键名。

那如何自定义配置呢?

MybatisPlus为我们提供了一些注解来进行自定义配置。

接下来我讲介绍比较常用的三个注解。

2.@TableName

@TableName用来指定表名。

使用情况:比如说我们定义的实体类叫做User,但是真实的数据库表的名称叫做tb_user,此时已不符合约定,我们需要在类上加上@TableName("tb_user")注解。如图

这样MybatisPlus就可以通过注解找到这个类的真实表名。

3.@TableId

@TableId用来指定表中的主键字段信息

使用情况:当实体类里的作为主键的变量名与真实数据库的主键名不一致时,此时也不符合约定,我们需要在对应变量名上加上@TableId。比如tb_user表的主键名叫做data_id,则User实体类的id(代表主键)需要加上主键@TableId("data_id"),如图:

4.@TableField

@TableField用来指定表中的普通字段信息

使用场景:

1.成员变量名与数据库字段名不一致。

比如数据库的用户名字段名叫name,而User对应的成员变量名为username,此时需要进行注解,如图:

2.成员变量名以is开头并且是布尔值。

这种情况经过MybatisPlus的反射处理,会将is去掉作为变量名,这样就起不到驼峰转下划线的作用了。比如布尔类型的isMarried。经过MybatisPlus的反射处理,会把is去掉,将Married作为变量名,那它根据约定得到的字段名为married,而不是is_married。就会跟数据库的字段名不一致。所以也需要加上注解,如图:

3.成员变量名与数据库关键字冲突

比如我成员变量名叫做order,而order是数据库关键字,就会引发冲突。

解决方法:@TableField("转义"),将order通过转义字符处理来指定字段名,转义字符用``包裹,如@TableField("`order`"),如图:

4.成员变量不是数据库字段

如果成员变量所代表的字段在数据库中没有,而不通过注解处理,就会出错。

比如我user表中假设没有password这个字段,而我User类中有password这个成员变量,我需要在对应位置加上@TableField(exist=false),来表明我数据库中没有这个字段,如图

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MyBatis Plus 是一个增强的 MyBatis 框架,提供了许多常用的注解来简化操作。以下是一些常用的 MyBatis Plus 注解: - `@TableName`:标注实体类对应的数据库表名。 - `@TableId`:标注实体类中对应的主键字段。 - `@TableField`:标注实体类中对应的数据库字段。 - `@Version`:标注乐观锁字段。 - `@Transient`:标注不需要映射到数据库表中的字段。 - `@KeySequence`:标注使用数据库序列生成主键的实体类。 - `@SqlParser`:标注是否需要 MyBatis Plus 的执行分析插件。 ### 回答2: MyBatisPlus是一个基于MyBatis的轻量级ORM框架,提供了一些常用注解来简化数据库操作。 1. @TableName:用于指定实体类对应的数据库表名,可以在类级别上使用。 2. @TableId:用于指定实体类的主键字段,并可以设置主键生成策略。 3. @TableField:用于指定实体类字段与数据库表字段的映射关系,可以指定字段名、是否进行主键策略等。 4. @Version:用于实现乐观锁,指定实体类中的版本字段。 5. @EnumValue:用于枚举字段与数据库中存储的映射关系。 6. @TableLogic:用于逻辑删除,实体类中指定一个逻辑删除的字段。 7. @KeySequence:用于指定主键序列的名称,主要用于Oracle数据库。 8. @SqlParser:用于指定在进行SQL解析时的一些属性,如过滤条件等。 9. @SqlJoin:用于指定查询时的多表关联查询。 10. @SqlStatement:用于自定义SQL的注解,可以指定SQL语句和对应的操作类型。 这些注解可以在实体类中使用,通过对实体类进行注解配置,MyBatisPlus可以自动根据注解生成对应的SQL语句,简化了数据库操作的编写。同时,这些注解提供了一些额外的功能,如乐观锁、逻辑删除等,方便开发者进行数据库操作和管理。总之,MyBatisPlus的常用注解可以简化开发者对数据库的操作,提高开发效率。 ### 回答3: MyBatisPlus是一个用于简化MyBatis操作的开源框架,它提供了许多常用的注解来增强MyBatis的功能,使开发更加便捷和高效。 1. @TableName注解:用于标识实体类数据库表之间的映射关系,通过指定表名可以方便地进行CRUD操作。 2. @TableField注解:用于标识实体类中的字段,可以指定字段名、是否为主键、是否为自增等属性,方便进行数据库操作。 3. @TableId注解:用于标识实体类中的主键字段,可以指定主键的生成策略,包括自增、UUID、雪花算法等,简化主键的处理。 4. @Result注解:用于指定查询结果的映射关系,可以通过指定列名、Java属性名等方式进行映射,确保查询结果正确转换为实体对象。 5. @Insert注解:用于标识插入操作,可以直接将实体对象插入到数据库中,提高插入效率。 6. @Update注解:用于标识更新操作,可以根据条件更新实体对象的属性,避免手动拼接更新语句。 7. @Delete注解:用于标识删除操作,可以根据条件删除数据库中的数据,简化删除数据的操作。 8. @Select注解:用于标识查询操作,可以根据条件查询数据库中的数据,方便地进行数据查询。 总之,MyBatisPlus提供了一系列常用的注解,可以简化开发人员的操作,提高开发效率。使用这些注解,我们可以更加方便地完成数据库操作,减少了手动sql编写的工作量,提高了开发速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值