社区
Web 开发
帖子详情
关于批量插入前的校验问题
yjsl__
2018-04-01 12:01:03
多对多关系中,在第三张表中记录关系,使用了自增主键[实际应当是两个涉及的外键作为主键],且不能重复
现在对这张表进行批量插入,但前提是已经在表里有的数据不希望写入进去
因为判断表里有没有数据需要查数据库,又是批量的原因,需要在for循环里查,
代码大概如下
for(){
根据2个外键查一条记录
if(xxx==null)
往数据库库中写入
}
这样子性能会不会很低,用的是mybatis,有更好的解决办法没?
...全文
816
7
打赏
收藏
关于批量插入前的校验问题
多对多关系中,在第三张表中记录关系,使用了自增主键[实际应当是两个涉及的外键作为主键],且不能重复 现在对这张表进行批量插入,但前提是已经在表里有的数据不希望写入进去 因为判断表里有没有数据需要查数据库,又是批量的原因,需要在for循环里查, 代码大概如下 for(){ 根据2个外键查一条记录 if(xxx==null) 往数据库库中写入 } 这样子性能会不会很低,用的是mybatis,有更好的解决办法没?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
诺丽果
2018-04-03
打赏
举报
回复
引用 6 楼 yjsl__ 的回复:
[quote=引用 1 楼 weixin_39309867 的回复:]
某英语老师查看自己的学生列表 学生A 相关操作 学生B 相关操作 学生C 相关操作 当点击新增多个学生的时候,弹出对话框,这个时候还是查学生表,仍然可以勾选学生A,学生B,学生C select * from 学生表 where id not in ()[/quote]对,当新增学生的时候,每个学生前面都有一个checkbox,已经选过的学生前面的checkbox就是处于勾选状态,可以用insertOrUpdate语句
xwn_2016
2018-04-02
打赏
举报
回复
两个外键建立唯一索引,然后用insertOrUpdate语句
诺丽果
2018-04-02
打赏
举报
回复
还有就是可以写一个存储过程,这样调用一次数据库就行,然后数据库会自己执行,还有楼上说的用insertOrUpdate也可以
maradona1984
2018-04-02
打赏
举报
回复
这个没必要多次查询吧,首先插入的集合自检,是否有重复,去掉重复的,然后把集合作为参数,在mybatis里循环拼出条件select * from table ((k1=xxx and k2 = xxx) or (k1=yyyand k2 = yyy) ...) 返回值为重复的数据,去掉该部分集合,剩下的就是不重复的,批量插入即可,你只需要操作数据库两次 如果中间表的主键没有别的地方用到,也可以先批量插入,再删除重复数据即可(删除重复数据的sql随便可以找到),代码更少
诺丽果
2018-04-02
打赏
举报
回复
性能是会低,我感觉这是设计思路的问题,你说“在第三张表中记录关系,使用了自增主键[实际应当是两个涉及的外键作为主键],且不能重复”,先说新建一个关系的时候,在页面肯定有显示,哪些是已经关联过的关系,一定是这两个外键的其中之一作为主要的,两个是一对多的关系,就比如说一个英语老师有好多学生,那关系表中应该是[英语老师,学生A],[英语老师,学生B],[英语老师,学生C],这才是关系表中的数据,当你新建关系的时候,页面一定会显示出来英语老师手底下有哪些个学生了,可以修改,可以增加啊,你可以在设计的时候就能避开可能产生的重复问题。但是如果不该设计的,说实话,我能想到的避开重复插入的方法跟你差不多,也是用for()循环,先判断一下数据库中有没有,
如果没有加入一个新的list中,最后for循环结束以后,使用批量插入
yjsl__
2018-04-02
打赏
举报
回复
引用 1 楼 weixin_39309867 的回复:
某英语老师查看自己的学生列表 学生A 相关操作 学生B 相关操作 学生C 相关操作 当点击新增多个学生的时候,弹出对话框,这个时候还是查学生表,仍然可以勾选学生A,学生B,学生C select * from 学生表 where id not in ()
真-酸辣土豆丝
2018-04-02
打赏
举报
回复
可以给不能重复的字段加上唯一索引,这样就不会重复插入。
android TestUsb
android读写USB设备的测试代码 包括得到设备、获取权限、读写数据。
Mybatis
批量插入
数据 --
校验
唯一索引
Mybatis
批量插入
数据 --
校验
唯一索引1. 单条插入2.
批量插入
同时
校验
唯一性 1. 单条插入 (1)未
校验
唯一索引:抛出违反唯一索引异常。 (2)单条
校验
唯一性后插入:频繁连接数据库,性能低 2.
批量插入
同时
校验
唯一性 (1)JDBC配置 支持批量操作,数据库连接地址增加:&allowMultiQueries=true jdbc:mysql://ip:port/datares...
mysql
批量插入
数据
前
校验
数据表是否已存在
mysql
批量插入
数据
前
校验
, 数据表数据是否已存在
PostgreSQL 中如何处理数据的
批量插入
和数据一致性
校验
?
在 PostgreSQL 中,处理数据的
批量插入
和数据一致性
校验
是非常重要的任务。通过使用COPY命令,我们可以快速地
批量插入
数据,提高数据插入的效率。通过使用约束条件、事务处理和数据验证函数,我们可以确保数据的一致性,避免出现数据错误和不一致的情况。在实际应用中,我们需要根据具体的需求和场景选择合适的方法来处理数据的
批量插入
和数据一致性
校验
。同时,我们还需要不断地优化和改进我们的数据库设计和操作流程,以提高数据库的性能和可靠性。
批量插入
时,需要
校验
该值是否存在在插入
废话不多说,直接上解决方案 INSERT IGNORE INTO IGNORE是MySQL相对于标准SQL的扩展。如果在新表中有重复关键字,此种方法效率比较高,判断是否存在,存在会丢弃掉这行数据,不做任何插入,否则插入。当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有
问题
,否则也会被忽略掉。这样不用
校验
是否存在了,有则忽略,无则添加...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章