MyBatis-plus 的BaseMapper的insert方法怎么实现的
时间: 2024-03-26 08:34:54 浏览: 21
MyBatis-Plus 的 BaseMapper 接口中的 insert 方法是如下实现的:
```java
@Lang(XMLLanguageDriver.class)
public interface BaseMapper<T> extends Mapper<T>, BaseSelectMapper<T>, BaseInsertMapper<T>, BaseUpdateMapper<T>, BaseDeleteMapper<T>, ConditionMapper<T>, IdsMapper<T>, ExampleMapper<T>, MySqlMapper<T> {
//...
}
```
可以看到,BaseMapper 接口继承了多个接口,这些接口分别定义了对应的增删改查方法。在这里,我们关注 BaseInsertMapper 接口,它定义了 insert 和 insertBatch 方法,这些方法的具体实现是由 MyBatis-Plus 框架通过动态 SQL 实现的。
以 insert 方法为例,其具体实现是在 InsertMapper 接口中定义的:
```java
@Deprecated
int insert(T entity);
default int insertBatchSomeColumn(Collection<T> entityList) {
return insertBatchSomeColumn(entityList, 100);
}
int insertBatchSomeColumn(Collection<T> entityList, int batchSize);
```
可以看到,insert 方法被标记为 @Deprecated,推荐使用 insertBatchSomeColumn 方法。这个方法的具体实现是在 MyBaseMapper 接口中定义的:
```java
int insertBatchSomeColumn(List<T> entityList);
```
可以看到,insertBatchSomeColumn 方法的具体实现是通过 MyBatis-Plus 框架提供的动态 SQL 实现的。该方法会将传入的实体对象列表转换成对应的 SQL 语句,并通过 MyBatis 的内置机制执行 SQL 语句,从而实现批量插入数据的功能。
需要注意的是,MyBatis-Plus 的 BaseMapper 接口提供了一些基本的 CRUD 操作,但是并不是所有的操作都可以使用这些方法来实现。在实际使用中,需要根据具体的业务需求进行扩展。