随着业务需要,有时我们需要将数据批量添加到数据库,mybatis
提供了将list
集合循环添加到数据库的方法。具体实现代码如下:
1、controller层:
public Map<String, Object> add(@Valid @RequestBody EnrollReq enrollReq) throws ServiceException { String teamId = enrollReq.getTeamId(); enrollReq.setTeamId(teamId); EnrollReq[] enrollReqs = enrollReq.getEnrollReqs(); int row = tTeamMemberService.add(teamId,enrollReqs); if(row==0){ return ResultUtil.failResult(); } return ResultUtil.successResult(null); }
2:业务层:
public int add(String teamId,EnrollReq[] enrollReqs) { /* TTeamMemberBo tTeamMemberBo = new TTeamMemberBo(); BeanUtils.copyProperties(tTeamMemberReq, tTeamMemberBo);*/ List<TTeamMemberBo>list=new ArrayList<>(); for (EnrollReq EnrollReq : enrollReqs) { TUserEnrollInfoBo userEnrollInfoBo = userEnrollInfoDao.selectByPrimaryKey(EnrollReq.getEnrollId()); TTeamMemberBo tTeamMemberBo=new TTeamMemberBo(); tTeamMemberBo.setTeamMemberId(SportConstants.T_TEAM_MEMBER_ID + Validator.getUUID()); tTeamMemberBo.setValidFlag(SportConstants.YES); tTeamMemberBo.setDataUpdateTm(new Date()); tTeamMemberBo.setCellphoneNum(userEnrollInfoBo.getEnrollCellphoneNum()); tTeamMemberBo.setUserName(userEnrollInfoBo.getEnrollName()); tTeamMemberBo.setIdenId(userEnrollInfoBo.getIdenId()); tTeamMemberBo.setIdenTypeCd(userEnrollInfoBo.getIdenTypeCd()); tTeamMemberBo.setUserId(userEnrollInfoBo.getUserId()); tTeamMemberBo.setTeamId(teamId); list.add(tTeamMemberBo); } return tTeamMemberDao.insertBatch(list); }
3:dao层中创建 insertBatch(List<TTeamMemberBo> list)方法,返回值是批量添加的数据条数:
int insertBatch(List<TTeamMemberBo> list);
4:封装入参实体类:
public class EnrollReq implements Serializable{ private EnrollReq[] enrollReqs; private String teamId; //报名人信息编号 private String enrollId; public EnrollReq[] getEnrollReqs() { return enrollReqs; } public void setEnrollReqs(EnrollReq[] enrollReqs) { this.enrollReqs = enrollReqs; } public String getTeamId() { return teamId; } public void setTeamId(String teamId) { this.teamId = teamId; } public String getEnrollId() { return enrollId; } public void setEnrollId(String enrollId) { this.enrollId = enrollId; } }
5:xml实现:
<insert id="insertBatch" parameterType="java.util.List"> insert into t_team_member (Team_Member_Id, Team_Id, User_Id, User_Name, Cellphone_Num, Iden_Id, Iden_Type_Cd, Valid_Flag, Data_Update_Tm ) VALUES <foreach collection ="list" item="tTeamMemberBo" separator =","> (#{tTeamMemberBo.teamMemberId,jdbcType=VARCHAR}, #{tTeamMemberBo.teamId,jdbcType=VARCHAR}, #{tTeamMemberBo.userId,jdbcType=VARCHAR}, #{tTeamMemberBo.userName,jdbcType=VARCHAR}, #{tTeamMemberBo.cellphoneNum,jdbcType=VARCHAR}, #{tTeamMemberBo.idenId,jdbcType=VARCHAR}, #{tTeamMemberBo.idenTypeCd,jdbcType=VARCHAR}, #{tTeamMemberBo.validFlag,jdbcType=CHAR}, #{tTeamMemberBo.dataUpdateTm,jdbcType=TIMESTAMP} ) </foreach > </insert>
6:入参:{ "teamId":"1",
"enrollReqs":[
{"enrollId":"208e9f4211254810a2602f64f4c29682"}
]
}