Browse Source

资源层规范

master
buaixuexideshitongxue 2 months ago
parent
commit
afe5e183e0
  1. 7
      pom.xml
  2. 87
      src/main/java/com/biutag/supervision/repository/base/BaseDAO.java
  3. 17
      src/main/java/com/biutag/supervision/repository/base/HBaseMapper.java

7
pom.xml

@ -31,6 +31,13 @@
</properties>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.1.2-jre</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

87
src/main/java/com/biutag/supervision/repository/base/BaseDAO.java

@ -0,0 +1,87 @@
package com.biutag.supervision.repository.base;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.google.common.collect.Lists;
import org.springframework.dao.DuplicateKeyException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @ClassName BaseDAO
* @Description 资源层基础
* @Author shihao
* @Date 2025/12/18 23:30
*/
public abstract class BaseDAO {
/**
* 整合单个和批量
* @param single
* @param batch
* @param wrapper
* @param function
* @param <T>
* @param <E>
*/
protected <T, E> void setBatchQuery(T single, Set<T> batch, LambdaQueryWrapper<E> wrapper, SFunction<E, T> function) {
if (CollectionUtils.isEmpty(batch)) {
if (isEmpty(single)) {
return;
}
wrapper.eq(function, single);
} else {
if (isEmpty(single)) {
if (batch.size() == 1) {
wrapper.eq(function, batch.iterator().next());
} else {
wrapper.in(function, batch);
}
} else {
Set<T> merge = new HashSet<>(batch);
merge.add(single);
wrapper.in(function, merge);
}
}
}
/**
* 批量添加 20一组
* @return
* @param <T>
*/
protected <T> void innerBatchInsert(HBaseMapper<T> mapper, List<T> entities, String message) {
try {
if (CollectionUtils.isEmpty(entities)) {
return;
}
int i;
if (entities.size() == 1) {
i = mapper.insert(entities.get(0));
} else {
i = Lists.partition(entities, 20).stream().map(mapper::insertBatch).reduce(0, Integer::sum);
}
if (i != entities.size()) {
throw new RuntimeException("批量添加失败,预期:" + entities.size() + ",实际插入:" + i);
}
} catch (DuplicateKeyException e) {
throw new RuntimeException("数据已存在");
}
}
protected <T> boolean isEmpty(T data) {
if (data == null) {
return true;
}
if (data instanceof String) {
return "".equals(data);
}
return false;
}
}

17
src/main/java/com/biutag/supervision/repository/base/HBaseMapper.java

@ -0,0 +1,17 @@
package com.biutag.supervision.repository.base;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* @ClassName HBaseMpper
* @Description 批量
* @Author shihao
* @Date 2025/12/18 23:46
*/
public interface HBaseMapper<T> extends BaseMapper<T> {
int insertBatch(List<T> entities);
}
Loading…
Cancel
Save