关于主外键关系主表子表插入 或者更新

主外键关系表主表子表插入或者更新问题

对于多表的整体跟新数据,并且各个表之间有主外键关联
表UserA为主表,主键为id;
表UserB为主表,主键为Bid,外键为id;
表UserC为主表,主键为Cid,外键为id;
代码逻辑为先插入主表的一条信息,如果是新增数据,则相应子表数据,也做相应插入;如果是更新数据,则相应子表数据,也做相应更新;

List<UserADto>  userAWebLists =  Webservice.queryUserA();//从其他系统同步过来的UserA,UserB,UserC
List<UserBDto>  userBWebLists =  Webservice.queryUserB();
List<UserCDto>  userCWebLists =  Webservice.queryUserC();
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");//此地方应该是用注解形式添加,由于准备不足,只能简写了
UserADto userADto =ac.getBean("UserADto"); 
UserBDto userBDto =ac.getBean("UserBDto "); 
UserCDto userCDto =ac.getBean("UserCDto "); 
String conditions ="";
for(UserADto userADto:userAWebLists ){
	 conditions =" '"+userADto.getId()+"'";
	Collection collection =  userADao.findBykeyPrimary(conditions) ;//查询当前系统中,UserA中对应的该条数据
	if(collection.size()==0){
		userADao.insert(userADto);
		List<UserBDto>  userBDtoLists =  userADao.findByForeignkeyFormWeb(userBWebLists  ,conditions);//查询当前系统中,UserB中对应的该条数据,可能是一对多的关系
		for(UserBDto userBDto:userBDtoLists){
		userBDtoDao.insert();
		}
		List<UserCDto>  userCDtoLists =  userADao.findByForeignkeyFormWeb(userCWebLists  ,conditions);
		for(UserCDto userCDto:userCDtoLists){
		userCDtoDao.insert();
		}
	}else{
		userADao.update(userADto);
		List<UserBDto>  userBDtoLists =  userADao.findByForeignkeyFormWeb(userBWebLists  ,conditions);
		for(UserBDto userBDto:userBDtoLists){
		userBDtoDao.update();
		}
		List<UserCDto>  userCDtoLists =  userADao.findByForeignkeyFormWeb(userCWebLists  ,conditions);
		for(UserCDto userCDto:userCDtoLists){
		userCDtoDao.update();
		}
	}
}
发布了6 篇原创文章 · 获赞 5 · 访问量 661

猜你喜欢

转载自blog.csdn.net/weixin_42585359/article/details/89741871