mybatis-plus中映射的实体类表不在默认数据库下,如何指定数据库的

本文探讨了在使用MyBatis-Plus时如何避免使用自带的CRUD操作,以及当选择使用自带CRUD时,如何通过@TableName注解指定数据库和表。作者分享了在注解中添加database前缀成功实现指定数据库表的方法。

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

1. 不使用mybatis-plus自带的CRUD

那样的话跟简单,相信大家也都知道,不使用自带CRUD而是自己写xml的话,那只需要在sql语句中加上database前缀就行,没什么好说的

2. 使用mybatis-plus自带的CRUD

但是当你使用自带的CRUD时,因为不需要你写sql,所以你也无法通过sql语句来指定database。
mybatis-plus会默认在你连接数据库时指定的database中寻找该表,要想指定database的话,就要依靠@TableName注解,一般都是在实体类上加上该注解,表明映射的哪个表,那么我想直接在该注解加上database前缀应该也行,尝试了一下,果真可以

@TableName(value ="smart_city.key_area")
### 禁用 MyBatis-Plus 实体类字段自动映射MyBatis-Plus 中,默认情况下会基于实体类的字段数据库字段之间的映射规则进行操作。如果希望禁用这种默认行为,可以通过调整全局配置或者修改实体类的设计方式实现。 #### 方法一:通过全局配置取消默认字段映射 MyBatis-Plus 的 `global-config` 配置项允许开发者自定义字段映射的行为。具体来说,可以在配置文件中设置 `field-strategy` 参数为 `NONE` 来关闭字段策略[^2]: ```yaml mybatis-plus: global-config: db-config: field-strategy: NONE ``` 上述配置的作用是告诉框架不对未标记注解的字段执行任何插入或更新操作,从而达到禁用默认字段映射的效果。 #### 方法二:使用注解显式指定字段映射 对于某些特定场景下的字段映射需求,可以选择不依赖于默认规则,而是通过手动添加注解的方式来完成映射。例如,在实体类中使用 `@TableField(exist = false)` 注解声明某个字段不存在于数据库中[^4]: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @TableName("example_table") public class ExampleEntity { private Long id; @TableField(exist = false) private String nonExistentColumn; // 数据库中无此列 } ``` 这样做的好处是可以灵活控制哪些字段参与 SQL 查询过程,而无需完全遵循框架设定好的规则。 #### 方法三:重写 BaseMapper 接口方法 另一种更彻底的方法是从源头上改变 Mapper 层逻辑。即继承官方提供的 `BaseMapper<T>` 并覆盖其中涉及字段处理的部分函数,比如 `insert`, `updateById` 等核心 CRUD 功能。不过这种方式较为复杂且容易引入维护成本,仅推荐给有特殊业务诉求的应用开发人员尝试。 --- ### 注意事项 当决定要禁用自动映射机制之后,请务必确认项目内的其他部分不会因此受到影响。特别是那些高度依赖原有约定俗成做法的地方可能需要额外适配工作才能正常运转下去。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值