重构IBaseService,加入批量更新功能
This commit is contained in:
parent
891ef9bb09
commit
37183ce262
@ -1,12 +1,42 @@
|
||||
package com.ruoyi.common.orm.core.service;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.mybatisflex.core.row.Db;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.ruoyi.common.orm.core.domain.BaseEntity;
|
||||
import com.mybatisflex.core.util.ClassUtil;
|
||||
import com.mybatisflex.core.util.SqlUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 自定义的服务基类接口
|
||||
*
|
||||
* @author dataprince数据小王子
|
||||
*/
|
||||
public interface IBaseService<T extends BaseEntity> extends IService<T> {
|
||||
public interface IBaseService<T> extends IService<T> {
|
||||
/**
|
||||
* <p>带主键批量保存实体类对象数据,适用于中间表有联合主键场合,例如sys_role_menu。
|
||||
*
|
||||
* @param entities 实体类对象
|
||||
* @return {@code true} 保存成功,{@code false} 保存失败。
|
||||
* @apiNote 默认调用的是 {@link BaseMapper#insertSelectiveWithPk(Object)} 方法,忽略实体类
|
||||
* {@code null} 属性的数据,使数据库配置的默认值生效。
|
||||
*/
|
||||
default boolean saveBatchWithPk(Collection<T> entities) {
|
||||
return saveBatchWithPk(entities, DEFAULT_BATCH_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>带主键批量保存实体类对象数据,适用于中间表有联合主键场合,例如sys_role_menu。
|
||||
*
|
||||
* @param entities 实体类对象
|
||||
* @param batchSize 每次保存切分的数量
|
||||
* @return {@code true} 保存成功,{@code false} 保存失败。
|
||||
* @apiNote 默认调用的是 {@link BaseMapper#insertSelectiveWithPk(Object)} 方法,忽略实体类
|
||||
* {@code null} 属性的数据,使数据库配置的默认值生效。
|
||||
*/
|
||||
default boolean saveBatchWithPk(Collection<T> entities, int batchSize) {
|
||||
Class<BaseMapper<T>> usefulClass = (Class<BaseMapper<T>>) ClassUtil.getUsefulClass(getMapper().getClass());
|
||||
return SqlUtil.toBool(Db.executeBatch(entities, batchSize, usefulClass, BaseMapper::insertSelectiveWithPk));
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import com.ruoyi.common.orm.core.service.IBaseService;
|
||||
*
|
||||
* @author dataprince数据小王子
|
||||
*/
|
||||
public class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseEntity> extends ServiceImpl<M , T> implements IBaseService<T> {
|
||||
public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M , T> implements IBaseService<T> {
|
||||
|
||||
/**
|
||||
* 构造基本查询条件
|
||||
|
@ -19,7 +19,7 @@ public class EntityInsertListener implements InsertListener {
|
||||
@Override
|
||||
public void onInsert(Object entity) {
|
||||
try {
|
||||
if (ObjectUtil.isNotNull(entity)) {
|
||||
if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity)) {
|
||||
BaseEntity baseEntity = (BaseEntity) entity;
|
||||
|
||||
Long loginUserId = LoginHelper.getUserId();
|
||||
|
@ -18,7 +18,7 @@ public class EntityUpdateListener implements UpdateListener {
|
||||
@Override
|
||||
public void onUpdate(Object entity) {
|
||||
try {
|
||||
if (ObjectUtil.isNotNull(entity)) {
|
||||
if (ObjectUtil.isNotNull(entity) && (entity instanceof BaseEntity)) {
|
||||
BaseEntity baseEntity = (BaseEntity) entity;
|
||||
baseEntity.setUpdateBy(LoginHelper.getUserId());
|
||||
baseEntity.setUpdateTime(new Date());
|
||||
|
Loading…
Reference in New Issue
Block a user