From e566cb6fa06af8c7430a9b2aeca2b1ac84043b29 Mon Sep 17 00:00:00 2001 From: Odboy Date: Thu, 29 Jan 2026 12:13:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor(mapper):=20=E9=87=8D=E6=9E=84MyBatis?= =?UTF-8?q?=20Plus=E5=9F=BA=E7=A1=80=E6=8E=A5=E5=8F=A3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加StrUtil工具类导入用于字符串处理 - 优化getMapWithKv方法实现,支持下划线转驼峰并使用HashMap替代ConcurrentHashMap - 重命名queryFeatureClazzList为queryFeatureClazz提升方法名准确性 - 简化searchFeatureClazz方法参数列表 - 更新注释标注所有功能已测试完成 - 移除LambdaQueryChainWrapper相关方法以简化接口定义 - 统一代码格式化并添加必要的空行提升可读性 refactor(service): 重构服务层接口和实现类 - 重命名saveFeatureClazzList为batchSaveFeatureClazz提升语义清晰度 - 重命名modifyFeatureClazzById为updateFeatureClazzById统一更新方法命名 - 重命名queryFeatureClazzById为getFeatureClazzById统一查询方法命名 - 新增batchUpdateFeatureClazzById方法支持批量更新操作 - 重命名queryClazzByArgs为getClazzByArgs保持查询方法命名一致性 - 重命名searchClazzPageByArgs和searchFeatureClazzPageByArgs替换原分页查询方法 - 移除过时的queryFeatureClazzPageByArgs相关方法 - 更新注释标注所有功能已测试完成 refactor(serviceimpl): 重构服务实现类逻辑 - 完善batchSaveFeatureClazz方法实现逻辑 - 更新batchUpdateFeatureClazzById方法实现 - 使用KitValidUtil替代BadRequestException进行参数验证 - 简化getFeatureClazzById方法实现逻辑 - 优化getClazzByArgs和getFeatureClazzByArgs方法排序逻辑 - 更新updateClazzByArgs方法使用LambdaUpdateWrapper - 移除过时的queryFeatureClazzPageByArgs相关实现 - 统一代码格式化并移除无用的导入包 refactor(beanutil): 优化Bean转换工具类 - 在copyToClass方法中添加空值检查防止NPE - 在copyToTarget方法中添加源和目标对象空值检查 - 优化copyToList方法处理空集合情况返回固定大小列表 - 统一代码格式化并添加必要的空行提升可读性 --- .../core/interfaces/KitMpMapper.java | 123 +++-------- .../core/interfaces/KitMpService.java | 112 ++++++++-- .../core/interfaces/KitMpServiceImpl.java | 208 +++--------------- .../main/java/cn/odboy/util/KitBeanUtil.java | 15 +- .../core/interfaces/KitMpMapper.java | 117 +++------- .../core/interfaces/KitMpService.java | 112 ++++++++-- .../core/interfaces/KitMpServiceImpl.java | 203 ++++------------- .../main/java/cn/odboy/util/KitBeanUtil.java | 16 +- 8 files changed, 338 insertions(+), 568 deletions(-) diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java index ec61e36c..8f916240 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java @@ -17,22 +17,19 @@ package cn.odboy.framework.mybatisplus.core.interfaces; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; import cn.odboy.base.KitPageResult; import cn.odboy.util.KitBeanUtil; -import cn.odboy.util.KitPageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import org.apache.ibatis.annotations.Param; -import org.springframework.data.domain.Pageable; /** * 公共抽象Mapper接口类 @@ -43,7 +40,7 @@ import org.springframework.data.domain.Pageable; public interface KitMpMapper extends BaseMapper { /** - * 批量插入 + * 批量插入(已测试) * * @param entityList List * @return 影响的行数 @@ -51,7 +48,7 @@ public interface KitMpMapper extends BaseMapper { int insertBatchSomeColumn(List entityList); /** - * 根据id全量更新 + * 根据id全量更新,为空的字段也会被更新(已测试) * * @param entity E * @return 影响的行数 @@ -59,129 +56,69 @@ public interface KitMpMapper extends BaseMapper { int alwaysUpdateSomeColumnById(@Param("et") E entity); /** - * 获取字典 + * 获取字典(已测试) * * @param wrapper LambdaQueryWrapper - * @param keyName 键对应的列名称 + * @param keyName 键对应的列名称(下划线会自动转驼峰) * @param valueName 值对应的列名称 * @return Map */ default Map getMapWithKv(LambdaQueryWrapper wrapper, String keyName, String valueName) { - Map result = new ConcurrentHashMap<>(1); + Map result = new HashMap<>(1); List list = this.selectList(wrapper); if (CollUtil.isEmpty(list)) { - return new HashMap<>(3); + return new HashMap<>(1); } E tempObj = list.stream().findFirst().orElse(null); if (tempObj == null) { - return new HashMap<>(3); + return new HashMap<>(1); } Field[] fields = ReflectUtil.getFields(tempObj.getClass()); - for (E e : list) { - Field keyField = null; - Field valueField = null; - for (Field field : fields) { - String fieldName = field.getName(); - if (fieldName.equals(keyName)) { - keyField = field; - } else if (fieldName.equals(valueName)) { - valueField = field; - break; - } + Field keyField = null; + Field valueField = null; + for (Field field : fields) { + String fieldName = field.getName(); + if (fieldName.equals(keyName)) { + keyField = field; + } else if (fieldName.equals(valueName)) { + valueField = field; + break; } + } + for (E e : list) { String fieldKey = String.valueOf(ReflectUtil.getFieldValue(e, keyField)); - Object fieldValue = ReflectUtil.getFieldValue(e, valueField); if (fieldKey != null) { - result.put(fieldKey, fieldValue); + // 下划线转驼峰 + String camelFieldKey = StrUtil.toCamelCase(fieldKey); + Object fieldValue = ReflectUtil.getFieldValue(e, valueField); + result.putIfAbsent(camelFieldKey, fieldValue); } } return result; } /** - * 条件查询列表, 并返回期望的对象 + * 条件查询列表, 并返回期望的对象(已测试) * * @param wrapper LambdaQueryWrapper * @param clazz 期望的对象类型 * @return List */ - default List queryFeatureClazzList(LambdaQueryWrapper wrapper, Class clazz) { + default List queryFeatureClazz(LambdaQueryWrapper wrapper, Class clazz) { List list = this.selectList(wrapper); - if (CollUtil.isEmpty(list)) { - return new ArrayList<>(); - } return KitBeanUtil.copyToList(list, clazz); } /** - * 条件查询列表, 并返回期望的对象 + * 条件查询分页列表, 并返回期望的对象(已测试) * - * @param wrapper LambdaQueryWrapper - * @param clazz 期望的对象类型 - * @return List - */ - default List queryFeatureClazzList(LambdaQueryChainWrapper wrapper, Class clazz) { - List list = wrapper.list(); - if (CollUtil.isEmpty(list)) { - return new ArrayList<>(); - } - return KitBeanUtil.copyToList(list, clazz); - } - - /** - * 条件查询分页列表, 并返回期望的对象 - * - * @param pageable 分页参数 * @param wrapper LambdaQueryWrapper wrapper * @param clazz 期望的对象类型 - * @return IPage - */ - default KitPageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryWrapper wrapper, - Class clazz) { - int pageNumber = pageable.getPageNumber(); - int pageSize = pageable.getPageSize(); - pageNumber = pageNumber <= 0 ? 1 : pageNumber; - pageSize = pageSize <= 0 ? 10 : pageSize; - IPage pageInfo = this.selectPage(new Page<>(pageNumber, pageSize), wrapper); - if (CollUtil.isEmpty(pageInfo.getRecords())) { - return new KitPageResult<>(new ArrayList<>(), pageInfo.getTotal()); - } - return new KitPageResult<>(KitBeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); - } - - /** - * 条件查询分页列表, 并返回期望的对象 - * * @param pageable 分页参数 - * @param wrapper LambdaQueryWrapper wrapper - * @param clazz 期望的对象类型 * @return IPage */ - default KitPageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryChainWrapper wrapper, - Class clazz) { - int pageNumber = pageable.getPageNumber(); - int pageSize = pageable.getPageSize(); - pageNumber = pageNumber <= 0 ? 1 : pageNumber; - pageSize = pageSize <= 0 ? 10 : pageSize; - IPage pageInfo = wrapper.page(new Page<>(pageNumber, pageSize)); - if (CollUtil.isEmpty(pageInfo.getRecords())) { - return KitPageUtil.emptyData(); - } + default KitPageResult searchFeatureClazz(LambdaQueryWrapper wrapper, Class clazz, Page pageable) { + IPage pageInfo = this.selectPage(pageable, wrapper); return new KitPageResult<>(KitBeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); } - - /** - * 获取目标类 - * - * @param wrapper LambdaQueryChainWrapper wrapper - * @param clazz 期望的对象类型 - * @return T - */ - default T getFeatureClazz(LambdaQueryChainWrapper wrapper, Class clazz) { - E e = this.selectOne(wrapper); - if (e == null) { - return null; - } - return KitBeanUtil.copyToClass(e, clazz); - } } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java index b30ea30b..0a7811f6 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.service.IService; + import java.io.Serializable; import java.util.Collection; import java.util.List; @@ -32,40 +33,107 @@ import java.util.List; */ public interface KitMpService extends IService { + /** + * 保存数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ int saveFeatureClazz(G resources); - int saveFeatureClazzList(List resources); + /** + * 批量保存数据(已测试) + * + * @param resources 非Tb对象集合 + * @return 影响的行数 + */ + int batchSaveFeatureClazz(List resources); - int modifyFeatureClazzById(G resources); + /** + * 根据id更新数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ + int updateFeatureClazzById(G resources); - boolean modifyFeatureClazzListById(Collection resources, int batchSize); + /** + * 根据id更新数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ + boolean batchUpdateFeatureClazzById(Collection resources, int batchSize); - G queryFeatureClazzById(Serializable id, Class targetClazz); + /** + * 通过id查询(已测试) + * + * @param id 数据id + * @param targetClazz 目标类型 + */ + G getFeatureClazzById(Serializable id, Class targetClazz); - T queryClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn); + /** + * 根据条件查询一条数据(已测试) + * + * @param wrapper 查询条件 + * @param orderColumn 排序字段 + * @return / + */ + T getClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn); - G queryFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz); + /** + * 根据条件查询一条数据(已测试) + * + * @param wrapper 查询条件 + * @param orderColumn 排序字段 + * @param targetClazz 目标类型 + * @return / + */ + G getFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class targetClazz); + /** + * 根据id集合查询目标数据(已测试) + * + * @param ids id集合 + * @param targetClazz 目标类型 + * @return / + */ List queryFeatureClazzListByIds(List ids, Class targetClazz); - List queryClazzListByArgs(Q args); - - List queryClazzListByArgs(LambdaQueryWrapper wrapper); - - List queryFeatureClazzListByArgs(Q args, Class targetClazz); - + /** + * 根据条件查询目标数据(已测试) + * + * @param wrapper 查询条件 + * @param targetClazz 目标类型 + * @return / + */ List queryFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz); - KitPageResult queryClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable); + /** + * 根据条件分页查询数据(已测试) + * + * @param wrapper 查询条件 + * @param pageable 分页参数 + * @return / + */ + KitPageResult searchClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable); - KitPageResult queryFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, - Class targetClazz); + /** + * 根据条件分页查询目标数据(已测试) + * + * @param wrapper 查询条件 + * @param pageable 分页参数 + * @param targetClazz 目标类型 + * @return / + */ + KitPageResult searchFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz); - KitPageResult queryFeatureClazzPageByArgs(Q args, IPage pageable, Class targetClazz); - - KitPageResult queryClazzPageByArgs(Q args, IPage pageable); - - int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity); - - int removeClazzByArgs(LambdaQueryWrapper wrapper); + /** + * 根据条件更新数据(已测试) + * + * @param wrapper 查询条件与值 + * @return 影响的行数 + */ + int updateClazzByArgs(LambdaQueryWrapper wrapper); } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java index ac0e1f04..ffe1c18c 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java @@ -15,21 +15,18 @@ */ package cn.odboy.framework.mybatisplus.core.interfaces; -import cn.hutool.core.collection.CollUtil; import cn.odboy.base.KitPageResult; -import cn.odboy.framework.exception.BadRequestException; -import cn.odboy.framework.mybatisplus.core.KitMpQUtil; import cn.odboy.util.KitBeanUtil; +import cn.odboy.util.KitValidUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + import java.io.Serializable; import java.util.Collection; import java.util.List; -import org.apache.ibatis.binding.MapperMethod; /** * 公共抽象Mapper接口类 @@ -39,147 +36,59 @@ import org.apache.ibatis.binding.MapperMethod; */ public class KitMpServiceImpl, T> extends ServiceImpl { - /** - * 快速插入 - * - * @param resources / - */ public int saveFeatureClazz(G resources) { return getBaseMapper().insert(KitBeanUtil.copyToClass(resources, this.getEntityClass())); } - /** - * 快速批量插入 - * - * @param resources / - */ - public int saveFeatureClazzList(List resources) { - return getBaseMapper().insertBatchSomeColumn(KitBeanUtil.copyToList(resources, this.getEntityClass())); + public int batchSaveFeatureClazz(List resources) { + return getBaseMapper().insert(KitBeanUtil.copyToList(resources, this.getEntityClass())).size(); } - /** - * 快速更新 - * - * @param resources / - */ - public int modifyFeatureClazzById(G resources) { + public int updateFeatureClazzById(G resources) { return getBaseMapper().updateById(KitBeanUtil.copyToClass(resources, this.getEntityClass())); } - /** - * 快速批量更新 - * - * @param resources / - * @param batchSize 每批数量 - */ - public boolean modifyFeatureClazzListById(Collection resources, int batchSize) { - String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE_BY_ID); - return this.executeBatch(resources, batchSize, (sqlSession, entity) -> { - MapperMethod.ParamMap param = new MapperMethod.ParamMap<>(); - param.put("et", KitBeanUtil.copyToClass(entity, this.getEntityClass())); - sqlSession.update(sqlStatement, param); - }); + public int batchUpdateFeatureClazzById(Collection resources, int batchSize) { + return getBaseMapper().updateById(KitBeanUtil.copyToList(resources, this.getEntityClass()), batchSize).size(); +// String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE_BY_ID); +// return this.executeBatch( +// resources, batchSize, (sqlSession, entity) -> { +// MapperMethod.ParamMap param = new MapperMethod.ParamMap<>(); +// param.put("et", KitBeanUtil.copyToClass(entity, this.getEntityClass())); +// sqlSession.update(sqlStatement, param); +// } +// ); } - /** - * 通过id查询 - * - * @param id / - * @param targetClazz 目标类型 - */ - public G queryFeatureClazzById(Serializable id, Class targetClazz) { - T entity = this.getById(id); - return entity == null ? null : KitBeanUtil.copyToClass(entity, targetClazz); + public G getFeatureClazzById(Serializable id, Class targetClazz) { + return KitBeanUtil.copyToClass(this.getById(id), targetClazz); } - /** - * 查一条数据 - * - * @param wrapper 制造条件 - */ - public T queryClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn) { - if (orderColumn == null) { - throw new BadRequestException("参数orderColumn(排序的列)必填"); - } + public T getClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn) { + KitValidUtil.isNull(orderColumn, "排序列", "orderColumn"); if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } - wrapper.last("limit 1"); wrapper.orderByDesc(orderColumn); - List ts = baseMapper.selectList(wrapper); - if (ts.isEmpty()) { - return null; - } - return ts.stream().findFirst().get(); + wrapper.last("limit 1"); + return baseMapper.selectOne(wrapper); } - public G queryFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz) { - if (orderColumn == null) { - throw new BadRequestException("参数orderColumn(排序的列)必填"); - } + public G getFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class targetClazz) { + KitValidUtil.isNull(orderColumn, "排序列", "orderColumn"); if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } - wrapper.last("limit 1"); wrapper.orderByDesc(orderColumn); - List ts = baseMapper.selectList(wrapper); - if (ts.isEmpty()) { - return null; - } - return KitBeanUtil.copyToClass(ts.stream().findFirst().get(), clazz); + wrapper.last("limit 1"); + return KitBeanUtil.copyToClass(baseMapper.selectOne(wrapper), targetClazz); } - /** - * 通过id集合查询 - * - * @param ids / - * @param targetClazz 目标类型 - */ public List queryFeatureClazzListByIds(List ids, Class targetClazz) { List entitys = this.listByIds(ids); - return entitys == null || entitys.isEmpty() ? CollUtil.newArrayList() : KitBeanUtil.copyToList(entitys, targetClazz); + return KitBeanUtil.copyToList(entitys, targetClazz); } - /** - * 查有关的数据 - * - * @param args 动态条件 - */ - public List queryClazzListByArgs(Q args) { - QueryWrapper predicate = KitMpQUtil.build(args); - return baseMapper.selectList(predicate); - } - - /** - * 查有关的数据 - * - * @param wrapper 制造条件 - */ - public List queryClazzListByArgs(LambdaQueryWrapper wrapper) { - if (wrapper == null) { - wrapper = new LambdaQueryWrapper<>(); - } - return baseMapper.selectList(wrapper); - } - - /** - * 查有关的数据并转成目标类型的数据 - * - * @param args 动态条件 - * @param targetClazz 目标类型 - */ - public List queryFeatureClazzListByArgs(Q args, Class targetClazz) { - QueryWrapper predicate = KitMpQUtil.build(args); - List data = baseMapper.selectList(predicate); - return KitBeanUtil.copyToList(data, targetClazz); - } - - /** - * 查有关的数据并转换为目标类型 - * - * @param wrapper 制造条件 - * @param targetClazz 目标类型 - */ public List queryFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); @@ -187,13 +96,7 @@ public class KitMpServiceImpl, T> extends ServiceImpl queryClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable) { + public KitPageResult searchClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -201,58 +104,19 @@ public class KitMpServiceImpl, T> extends ServiceImpl(originPageData.getRecords(), originPageData.getTotal()); } - /** - * 查有关的分页数据 - * - * @param wrapper 制造条件 - * @param pageable 分页参数 - * @param targetClazz 目标类型 - */ - public KitPageResult queryFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, - Class targetClazz) { + public KitPageResult searchFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), - originPageData.getTotal()); + return new KitPageResult<>( + KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), + originPageData.getTotal() + ); } - public KitPageResult queryFeatureClazzPageByArgs(Q args, IPage pageable, Class targetClazz) { - QueryWrapper wrapper = KitMpQUtil.build(args); - IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), - originPageData.getTotal()); - } - - public KitPageResult queryClazzPageByArgs(Q args, IPage pageable) { - QueryWrapper wrapper = KitMpQUtil.build(args); - IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(originPageData.getRecords(), originPageData.getTotal()); - } - - /** - * 条件更新 - * - * @param wrapper 制造条件 - * @param entity 更新内容 - */ - public int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity) { - if (wrapper == null) { - throw new BadRequestException("参数wrapper必填"); - } - return baseMapper.update(entity, wrapper); - } - - /** - * 条件删除 - * - * @param wrapper 制造条件 - */ - public int removeClazzByArgs(LambdaQueryWrapper wrapper) { - if (wrapper == null) { - throw new BadRequestException("参数wrapper必填"); - } - return baseMapper.delete(wrapper); + public int updateClazzByArgs(LambdaUpdateWrapper wrapper) { + KitValidUtil.isNull(wrapper, "查询条件与值", "wrapper"); + return baseMapper.update(null, wrapper); } } diff --git a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java index 50a57ebd..47ed97b5 100644 --- a/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java +++ b/cutejava-springboot3/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java @@ -18,6 +18,7 @@ package cn.odboy.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import lombok.experimental.UtilityClass; + import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -32,18 +33,26 @@ import java.util.List; public class KitBeanUtil { public static T copyToClass(Object source, Class tClass) { + if (source == null) { + return null; + } return BeanUtil.copyProperties(source, tClass); } public static void copyToTarget(Object source, Object target) { + if (source == null || target == null) { + return; + } BeanUtil.copyProperties(source, target, CopyOptions.create().setIgnoreNullValue(true)); } public static List copyToList(Collection collection, Class targetType) { - List ts = BeanUtil.copyToList(collection, targetType); - if (ts == null) { + if (collection == null) { return new ArrayList<>(0); } - return ts; + if (collection.isEmpty()) { + return new ArrayList<>(0); + } + return BeanUtil.copyToList(collection, targetType); } } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java index ec61e36c..9a1f02f0 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpMapper.java @@ -17,6 +17,7 @@ package cn.odboy.framework.mybatisplus.core.interfaces; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; import cn.odboy.base.KitPageResult; import cn.odboy.util.KitBeanUtil; import cn.odboy.util.KitPageUtil; @@ -25,12 +26,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; + import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; @@ -43,7 +46,7 @@ import org.springframework.data.domain.Pageable; public interface KitMpMapper extends BaseMapper { /** - * 批量插入 + * 批量插入(已测试) * * @param entityList List * @return 影响的行数 @@ -51,7 +54,7 @@ public interface KitMpMapper extends BaseMapper { int insertBatchSomeColumn(List entityList); /** - * 根据id全量更新 + * 根据id全量更新,为空的字段也会被更新(已测试) * * @param entity E * @return 影响的行数 @@ -59,129 +62,69 @@ public interface KitMpMapper extends BaseMapper { int alwaysUpdateSomeColumnById(@Param("et") E entity); /** - * 获取字典 + * 获取字典(已测试) * * @param wrapper LambdaQueryWrapper - * @param keyName 键对应的列名称 + * @param keyName 键对应的列名称(下划线会自动转驼峰) * @param valueName 值对应的列名称 * @return Map */ default Map getMapWithKv(LambdaQueryWrapper wrapper, String keyName, String valueName) { - Map result = new ConcurrentHashMap<>(1); + Map result = new HashMap<>(1); List list = this.selectList(wrapper); if (CollUtil.isEmpty(list)) { - return new HashMap<>(3); + return new HashMap<>(1); } E tempObj = list.stream().findFirst().orElse(null); if (tempObj == null) { - return new HashMap<>(3); + return new HashMap<>(1); } Field[] fields = ReflectUtil.getFields(tempObj.getClass()); - for (E e : list) { - Field keyField = null; - Field valueField = null; - for (Field field : fields) { - String fieldName = field.getName(); - if (fieldName.equals(keyName)) { - keyField = field; - } else if (fieldName.equals(valueName)) { - valueField = field; - break; - } + Field keyField = null; + Field valueField = null; + for (Field field : fields) { + String fieldName = field.getName(); + if (fieldName.equals(keyName)) { + keyField = field; + } else if (fieldName.equals(valueName)) { + valueField = field; + break; } + } + for (E e : list) { String fieldKey = String.valueOf(ReflectUtil.getFieldValue(e, keyField)); - Object fieldValue = ReflectUtil.getFieldValue(e, valueField); if (fieldKey != null) { - result.put(fieldKey, fieldValue); + // 下划线转驼峰 + String camelFieldKey = StrUtil.toCamelCase(fieldKey); + Object fieldValue = ReflectUtil.getFieldValue(e, valueField); + result.putIfAbsent(camelFieldKey, fieldValue); } } return result; } /** - * 条件查询列表, 并返回期望的对象 + * 条件查询列表, 并返回期望的对象(已测试) * * @param wrapper LambdaQueryWrapper * @param clazz 期望的对象类型 * @return List */ - default List queryFeatureClazzList(LambdaQueryWrapper wrapper, Class clazz) { + default List queryFeatureClazz(LambdaQueryWrapper wrapper, Class clazz) { List list = this.selectList(wrapper); - if (CollUtil.isEmpty(list)) { - return new ArrayList<>(); - } return KitBeanUtil.copyToList(list, clazz); } /** - * 条件查询列表, 并返回期望的对象 + * 条件查询分页列表, 并返回期望的对象(已测试) * - * @param wrapper LambdaQueryWrapper - * @param clazz 期望的对象类型 - * @return List - */ - default List queryFeatureClazzList(LambdaQueryChainWrapper wrapper, Class clazz) { - List list = wrapper.list(); - if (CollUtil.isEmpty(list)) { - return new ArrayList<>(); - } - return KitBeanUtil.copyToList(list, clazz); - } - - /** - * 条件查询分页列表, 并返回期望的对象 - * - * @param pageable 分页参数 * @param wrapper LambdaQueryWrapper wrapper * @param clazz 期望的对象类型 - * @return IPage - */ - default KitPageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryWrapper wrapper, - Class clazz) { - int pageNumber = pageable.getPageNumber(); - int pageSize = pageable.getPageSize(); - pageNumber = pageNumber <= 0 ? 1 : pageNumber; - pageSize = pageSize <= 0 ? 10 : pageSize; - IPage pageInfo = this.selectPage(new Page<>(pageNumber, pageSize), wrapper); - if (CollUtil.isEmpty(pageInfo.getRecords())) { - return new KitPageResult<>(new ArrayList<>(), pageInfo.getTotal()); - } - return new KitPageResult<>(KitBeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); - } - - /** - * 条件查询分页列表, 并返回期望的对象 - * * @param pageable 分页参数 - * @param wrapper LambdaQueryWrapper wrapper - * @param clazz 期望的对象类型 * @return IPage */ - default KitPageResult queryFeatureClazzPage(Pageable pageable, LambdaQueryChainWrapper wrapper, - Class clazz) { - int pageNumber = pageable.getPageNumber(); - int pageSize = pageable.getPageSize(); - pageNumber = pageNumber <= 0 ? 1 : pageNumber; - pageSize = pageSize <= 0 ? 10 : pageSize; - IPage pageInfo = wrapper.page(new Page<>(pageNumber, pageSize)); - if (CollUtil.isEmpty(pageInfo.getRecords())) { - return KitPageUtil.emptyData(); - } + default KitPageResult searchFeatureClazz(LambdaQueryWrapper wrapper, Class clazz, Page pageable) { + IPage pageInfo = this.selectPage(pageable, wrapper); return new KitPageResult<>(KitBeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); } - - /** - * 获取目标类 - * - * @param wrapper LambdaQueryChainWrapper wrapper - * @param clazz 期望的对象类型 - * @return T - */ - default T getFeatureClazz(LambdaQueryChainWrapper wrapper, Class clazz) { - E e = this.selectOne(wrapper); - if (e == null) { - return null; - } - return KitBeanUtil.copyToClass(e, clazz); - } } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java index b30ea30b..0a7811f6 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpService.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.service.IService; + import java.io.Serializable; import java.util.Collection; import java.util.List; @@ -32,40 +33,107 @@ import java.util.List; */ public interface KitMpService extends IService { + /** + * 保存数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ int saveFeatureClazz(G resources); - int saveFeatureClazzList(List resources); + /** + * 批量保存数据(已测试) + * + * @param resources 非Tb对象集合 + * @return 影响的行数 + */ + int batchSaveFeatureClazz(List resources); - int modifyFeatureClazzById(G resources); + /** + * 根据id更新数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ + int updateFeatureClazzById(G resources); - boolean modifyFeatureClazzListById(Collection resources, int batchSize); + /** + * 根据id更新数据(已测试) + * + * @param resources 非Tb对象 + * @return 影响的行数 + */ + boolean batchUpdateFeatureClazzById(Collection resources, int batchSize); - G queryFeatureClazzById(Serializable id, Class targetClazz); + /** + * 通过id查询(已测试) + * + * @param id 数据id + * @param targetClazz 目标类型 + */ + G getFeatureClazzById(Serializable id, Class targetClazz); - T queryClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn); + /** + * 根据条件查询一条数据(已测试) + * + * @param wrapper 查询条件 + * @param orderColumn 排序字段 + * @return / + */ + T getClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn); - G queryFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz); + /** + * 根据条件查询一条数据(已测试) + * + * @param wrapper 查询条件 + * @param orderColumn 排序字段 + * @param targetClazz 目标类型 + * @return / + */ + G getFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class targetClazz); + /** + * 根据id集合查询目标数据(已测试) + * + * @param ids id集合 + * @param targetClazz 目标类型 + * @return / + */ List queryFeatureClazzListByIds(List ids, Class targetClazz); - List queryClazzListByArgs(Q args); - - List queryClazzListByArgs(LambdaQueryWrapper wrapper); - - List queryFeatureClazzListByArgs(Q args, Class targetClazz); - + /** + * 根据条件查询目标数据(已测试) + * + * @param wrapper 查询条件 + * @param targetClazz 目标类型 + * @return / + */ List queryFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz); - KitPageResult queryClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable); + /** + * 根据条件分页查询数据(已测试) + * + * @param wrapper 查询条件 + * @param pageable 分页参数 + * @return / + */ + KitPageResult searchClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable); - KitPageResult queryFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, - Class targetClazz); + /** + * 根据条件分页查询目标数据(已测试) + * + * @param wrapper 查询条件 + * @param pageable 分页参数 + * @param targetClazz 目标类型 + * @return / + */ + KitPageResult searchFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz); - KitPageResult queryFeatureClazzPageByArgs(Q args, IPage pageable, Class targetClazz); - - KitPageResult queryClazzPageByArgs(Q args, IPage pageable); - - int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity); - - int removeClazzByArgs(LambdaQueryWrapper wrapper); + /** + * 根据条件更新数据(已测试) + * + * @param wrapper 查询条件与值 + * @return 影响的行数 + */ + int updateClazzByArgs(LambdaQueryWrapper wrapper); } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java index ac0e1f04..b7b880bf 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/framework/mybatisplus/core/interfaces/KitMpServiceImpl.java @@ -20,15 +20,19 @@ import cn.odboy.base.KitPageResult; import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.mybatisplus.core.KitMpQUtil; import cn.odboy.util.KitBeanUtil; +import cn.odboy.util.KitValidUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.enums.SqlMethod; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + import java.io.Serializable; import java.util.Collection; import java.util.List; + import org.apache.ibatis.binding.MapperMethod; /** @@ -39,147 +43,59 @@ import org.apache.ibatis.binding.MapperMethod; */ public class KitMpServiceImpl, T> extends ServiceImpl { - /** - * 快速插入 - * - * @param resources / - */ public int saveFeatureClazz(G resources) { return getBaseMapper().insert(KitBeanUtil.copyToClass(resources, this.getEntityClass())); } - /** - * 快速批量插入 - * - * @param resources / - */ - public int saveFeatureClazzList(List resources) { - return getBaseMapper().insertBatchSomeColumn(KitBeanUtil.copyToList(resources, this.getEntityClass())); + public int batchSaveFeatureClazz(List resources) { + return getBaseMapper().insert(KitBeanUtil.copyToList(resources, this.getEntityClass())).size(); } - /** - * 快速更新 - * - * @param resources / - */ - public int modifyFeatureClazzById(G resources) { + public int updateFeatureClazzById(G resources) { return getBaseMapper().updateById(KitBeanUtil.copyToClass(resources, this.getEntityClass())); } - /** - * 快速批量更新 - * - * @param resources / - * @param batchSize 每批数量 - */ - public boolean modifyFeatureClazzListById(Collection resources, int batchSize) { - String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE_BY_ID); - return this.executeBatch(resources, batchSize, (sqlSession, entity) -> { - MapperMethod.ParamMap param = new MapperMethod.ParamMap<>(); - param.put("et", KitBeanUtil.copyToClass(entity, this.getEntityClass())); - sqlSession.update(sqlStatement, param); - }); + public int batchUpdateFeatureClazzById(Collection resources, int batchSize) { + return getBaseMapper().updateById(KitBeanUtil.copyToList(resources, this.getEntityClass()), batchSize).size(); +// String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE_BY_ID); +// return this.executeBatch( +// resources, batchSize, (sqlSession, entity) -> { +// MapperMethod.ParamMap param = new MapperMethod.ParamMap<>(); +// param.put("et", KitBeanUtil.copyToClass(entity, this.getEntityClass())); +// sqlSession.update(sqlStatement, param); +// } +// ); } - /** - * 通过id查询 - * - * @param id / - * @param targetClazz 目标类型 - */ - public G queryFeatureClazzById(Serializable id, Class targetClazz) { - T entity = this.getById(id); - return entity == null ? null : KitBeanUtil.copyToClass(entity, targetClazz); + public G getFeatureClazzById(Serializable id, Class targetClazz) { + return KitBeanUtil.copyToClass(this.getById(id), targetClazz); } - /** - * 查一条数据 - * - * @param wrapper 制造条件 - */ - public T queryClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn) { - if (orderColumn == null) { - throw new BadRequestException("参数orderColumn(排序的列)必填"); - } + public T getClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn) { + KitValidUtil.isNull(orderColumn, "排序列", "orderColumn"); if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } - wrapper.last("limit 1"); wrapper.orderByDesc(orderColumn); - List ts = baseMapper.selectList(wrapper); - if (ts.isEmpty()) { - return null; - } - return ts.stream().findFirst().get(); + wrapper.last("limit 1"); + return baseMapper.selectOne(wrapper); } - public G queryFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class clazz) { - if (orderColumn == null) { - throw new BadRequestException("参数orderColumn(排序的列)必填"); - } + public G getFeatureClazzByArgs(LambdaQueryWrapper wrapper, SFunction orderColumn, Class targetClazz) { + KitValidUtil.isNull(orderColumn, "排序列", "orderColumn"); if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } - wrapper.last("limit 1"); wrapper.orderByDesc(orderColumn); - List ts = baseMapper.selectList(wrapper); - if (ts.isEmpty()) { - return null; - } - return KitBeanUtil.copyToClass(ts.stream().findFirst().get(), clazz); + wrapper.last("limit 1"); + return KitBeanUtil.copyToClass(baseMapper.selectOne(wrapper), targetClazz); } - /** - * 通过id集合查询 - * - * @param ids / - * @param targetClazz 目标类型 - */ public List queryFeatureClazzListByIds(List ids, Class targetClazz) { List entitys = this.listByIds(ids); - return entitys == null || entitys.isEmpty() ? CollUtil.newArrayList() : KitBeanUtil.copyToList(entitys, targetClazz); + return KitBeanUtil.copyToList(entitys, targetClazz); } - /** - * 查有关的数据 - * - * @param args 动态条件 - */ - public List queryClazzListByArgs(Q args) { - QueryWrapper predicate = KitMpQUtil.build(args); - return baseMapper.selectList(predicate); - } - - /** - * 查有关的数据 - * - * @param wrapper 制造条件 - */ - public List queryClazzListByArgs(LambdaQueryWrapper wrapper) { - if (wrapper == null) { - wrapper = new LambdaQueryWrapper<>(); - } - return baseMapper.selectList(wrapper); - } - - /** - * 查有关的数据并转成目标类型的数据 - * - * @param args 动态条件 - * @param targetClazz 目标类型 - */ - public List queryFeatureClazzListByArgs(Q args, Class targetClazz) { - QueryWrapper predicate = KitMpQUtil.build(args); - List data = baseMapper.selectList(predicate); - return KitBeanUtil.copyToList(data, targetClazz); - } - - /** - * 查有关的数据并转换为目标类型 - * - * @param wrapper 制造条件 - * @param targetClazz 目标类型 - */ public List queryFeatureClazzListByArgs(LambdaQueryWrapper wrapper, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); @@ -187,13 +103,7 @@ public class KitMpServiceImpl, T> extends ServiceImpl queryClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable) { + public KitPageResult searchClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } @@ -201,58 +111,19 @@ public class KitMpServiceImpl, T> extends ServiceImpl(originPageData.getRecords(), originPageData.getTotal()); } - /** - * 查有关的分页数据 - * - * @param wrapper 制造条件 - * @param pageable 分页参数 - * @param targetClazz 目标类型 - */ - public KitPageResult queryFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, - Class targetClazz) { + public KitPageResult searchFeatureClazzPageByArgs(LambdaQueryWrapper wrapper, IPage pageable, Class targetClazz) { if (wrapper == null) { wrapper = new LambdaQueryWrapper<>(); } IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), - originPageData.getTotal()); + return new KitPageResult<>( + KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), + originPageData.getTotal() + ); } - public KitPageResult queryFeatureClazzPageByArgs(Q args, IPage pageable, Class targetClazz) { - QueryWrapper wrapper = KitMpQUtil.build(args); - IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(KitBeanUtil.copyToList(originPageData.getRecords(), targetClazz), - originPageData.getTotal()); - } - - public KitPageResult queryClazzPageByArgs(Q args, IPage pageable) { - QueryWrapper wrapper = KitMpQUtil.build(args); - IPage originPageData = baseMapper.selectPage(pageable, wrapper); - return new KitPageResult<>(originPageData.getRecords(), originPageData.getTotal()); - } - - /** - * 条件更新 - * - * @param wrapper 制造条件 - * @param entity 更新内容 - */ - public int modifyClazzByArgs(LambdaQueryWrapper wrapper, T entity) { - if (wrapper == null) { - throw new BadRequestException("参数wrapper必填"); - } - return baseMapper.update(entity, wrapper); - } - - /** - * 条件删除 - * - * @param wrapper 制造条件 - */ - public int removeClazzByArgs(LambdaQueryWrapper wrapper) { - if (wrapper == null) { - throw new BadRequestException("参数wrapper必填"); - } - return baseMapper.delete(wrapper); + public int updateClazzByArgs(LambdaUpdateWrapper wrapper) { + KitValidUtil.isNull(wrapper, "查询条件与值", "wrapper"); + return baseMapper.update(null, wrapper); } } diff --git a/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java b/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java index e0c55117..b743be9d 100644 --- a/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java +++ b/cutejava/cutejava-framework/src/main/java/cn/odboy/util/KitBeanUtil.java @@ -17,9 +17,11 @@ package cn.odboy.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; + import java.util.ArrayList; import java.util.Collection; import java.util.List; + import lombok.experimental.UtilityClass; /** @@ -32,18 +34,26 @@ import lombok.experimental.UtilityClass; public class KitBeanUtil { public static T copyToClass(Object source, Class tClass) { + if (source == null) { + return null; + } return BeanUtil.copyProperties(source, tClass); } public static void copyToTarget(Object source, Object target) { + if (source == null || target == null) { + return; + } BeanUtil.copyProperties(source, target, CopyOptions.create().setIgnoreNullValue(true)); } public static List copyToList(Collection collection, Class targetType) { - List ts = BeanUtil.copyToList(collection, targetType); - if (ts == null) { + if (collection == null) { return new ArrayList<>(0); } - return ts; + if (collection.isEmpty()) { + return new ArrayList<>(0); + } + return BeanUtil.copyToList(collection, targetType); } }