技术框架:springboot + dubbo + mybatis-plus
id非自增的表怎么将数据批量插入数据库
mapper, mapper.xml都要改
示例
/**
* 添加信息
*
* @param addBmsSMaintainSchemeParam
* @return
*/
@Override
public void add(AddBmsSMaintainSchemeParam addBmsSMaintainSchemeParam) {
BmsSMaintainScheme bmsSMaintainScheme = addBmsSMaintainSchemeParam.getBmsSMaintainScheme();
int id = idManagementService.getId("bms_s_scheme");
bmsSMaintainScheme.setId(id);
bmsSMaintainScheme.setDeleteState(0);
bmsSMaintainSchemeMapper.insert(bmsSMaintainScheme);
//关联关系表
List<BmsRMaintainScheme> bmsRMaintainSchemeList = addBmsSMaintainSchemeParam.getBmsSStructureList();
int bmsRMaintainSchemeId = idManagementService.getId("bms_r_scheme", bmsRMaintainSchemeList.size());
for (BmsRMaintainScheme bmsRStructureStyle : bmsRMaintainSchemeList) {
bmsRStructureStyle.setId(bmsRMaintainSchemeId++ - bmsRMaintainSchemeList.size() + 1);
bmsRStructureStyle.setSchemeId(id);
bmsRStructureStyle.setDeleteState(0);
}
bmsRMaintainSchemeService.saveBatch(bmsRMaintainSchemeList);
}
实体
service层
public interface RiaDKeyStandService extends CommonService<RiaDKeyStand> {
/**
* 批量添加信息
* @param riaDKeyStands
* @return
*/
boolean addList(List<RiaDKeyStand> riaDKeyStands);
/**
* 插入单条数据
*
* @param tableName
* @return
*/
int add(RiaDKeyStand riaDKeyStand);
/**
* 调用存储过程获取id
*
* @param tableName
* @return
*/
int getId(String tableName, Integer insertNum);
/**
* 调用存储过程获取id
*
* @param tableName
* @return
*/
int getId(String tableName);
}
实现层
@Service
@AllArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class RiaDKeyStandServiceImpl extends CommonServiceImpl<RiaDKeyStandMapper, RiaDKeyStand> implements RiaDKeyStandService {
private final RiaDKeyStandMapper riaDKeyStandMapper;
/**
* 批量添加信息
*
* @param riaDKeyStands
* @return
*/
@Override
public boolean addList(List<RiaDKeyStand> riaDKeyStands) {
//关联关系表
int riaDKeyStandId = getId("ria_d_key_stand", riaDKeyStands.size());
for (RiaDKeyStand riaDKeyStand : riaDKeyStands) {
riaDKeyStand.setId(riaDKeyStandId++ - riaDKeyStands.size() + 1);
riaDKeyStand.setDeleteState(0);
}
return saveBatch(riaDKeyStands);
}
/**
* 添加信息
*
* @param riaDKeyStands
* @return
*/
@Override
public boolean addList(RiaDKeyStand riaDKeyStands) {
//关联关系表
int riaDKeyStandId = getId("ria_d_key_stand");
riaDKeyStand.setId(riaDKeyStandId);
return riaDKeyStandMapper.insert(riaDKeyStands);
}
/**
* 批量插入获取当前id
*
**/
public int getId(String tableName, Integer insertNum) {
Map<String, Object> map = new HashMap<>();
map.put("tableName", tableName);
map.put("insertNum", insertNum);
map.put("primaryId", "");
riaDKeyStandMapper.primaryId(map);
return Integer.parseInt(map.get("primaryId").toString());
}
/**
* 调用存储过程获取id
*
* @param tableName
* @return
*/
public int getId(String tableName) {
Map<String, Object> map = new HashMap<>();
map.put("tableName", tableName);
map.put("insertNum", 1);
map.put("primaryId", "");
riaDKeyStandMapper.primaryId(map);
return Integer.parseInt(map.get("primaryId").toString());
}
}
mapper
@Repository
public interface RiaDKeyStandMapper extends CommonMapper<RiaDKeyStand> {
void primaryId(@Param("params") Map<String, Object> params);
}
mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ectit.mapper.business.RiaDKeyStandMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_user_id,
create_time,
modify_user_id,
modify_time,
id, msegment_name, msegment_code, direction, lane_name, begin_mile, end_mile, present_iri, diff, year, is_input, err_msg, delete_state
</sql>
<select id="primaryId" statementType="CALLABLE" useCache="false">
{call tj_decision.getPrimaryKey(
#{params.tableName,jdbcType=VARCHAR,mode=IN},
#{params.insertNum,jdbcType=INTEGER,mode=IN},
#{params.primaryId,jdbcType=INTEGER,mode=OUT}
)}
</select>
</mapper>