关于保存数据库中的数据参数类型

数据库保存参数问题

1.普通的数据库保存

数据库增删改查,极其相关的sql语句.插入的数据
上图吧,不想表达了,让我有点难受

传入的参数是一个list集合对象,
在这里插入图片描述
而在准备这个emailList对象的时候,

	//准备list集合
	List<EmailVO> emailList=new ArrayList<>();
	//准备list集合里面的vo对象
	EmailVO emailVo=new EmailVo();
	//对vo对象进行各种赋值
	emailVo.setId(123);
	emailVo.setName("张三");
	emailVo.setSex("male");
	...
	//将设置值后的vo对象加到list集合中去
	emailList.add(emailVo);

	//准备好数据之后,有个save()方法
	saveEmail(emailList);

但当我对这个数据进行遍历循环做其他操作的时候,这个数据是保存不进去的,因为这个emailList这个List集合对象中的两个emaiVo在保存的时候会发生id重复的情况

//emailList里面的两条数据在循环的时候不重复(之前重复,修改之后不重复),
for{
	//其他业务逻辑
	....
	saveEmail(emailList);
	...
	//其他业务逻辑
}

在这种情况下,emailList第一次只有一条数据,循环第一次的情况

emailList{
	id:123,....
}

而循环第二次的情况

emailList{
	id:123,....;
	id:234,....;
}

虽然emailList中的id不重复,但是在整个循环中,第一次已经保存过id:123的这条数据了,而循环到第二次的时候,此时同时在保存id:123和id:234这两条数据,这样的话,在id为数据库表唯一主键的情况下,两次循环的id就重复了,因此会报错.

	update database error,primary key ...

就会出现上面类似的错误

思考:在做数据存储的时候,传入参数

boolean saveEmailRecord(@Param(“emailList”) List emailList);

	@Insert("")
    boolean saveEmailRecord(@Param("emailList") List<EmailVO> emailList);

中的这个 List emailList 应该如何定义,我想代码原作者是想兼容同时存储多条数据,这样也无不可,但是应该提供一个只保存emaiVo的方法,比如下面这种

	//应该准备好了这个再考虑多条数据保存的问题
    boolean saveEmailRecord(@Param("emailVo") EmailVO> emailVo);

这样我很难受,改的代码,希望以后自己写的代码不会出现这种问题

你可能感兴趣的:(java相关总结)