preparedstatement批量插入和更新?

时间:2015-09-09 10:08:54

标签: java sql prepared-statement insert-update

我有query = "select * from user_message where username = 'john777@gmail.com';"。有一个列'is​​_read'(当消息发送给用户时,默认情况下is_read为false,表示用户尚未读取消息),首次选择后我必须将该列更改为true UPDATE user_message SET is_read=true where username = 'john777@gmail.com';这意味着用户已阅读消息。所以问题是我可以制作一个查询并通过批处理执行它还是应该进行两个不同的查询?哪种方式更好?

3 个答案:

答案 0 :(得分:0)

您正在使用两个参数username和is_read编写一个方法。您可以在需要时随时调用此方法。

答案 1 :(得分:0)

我认为您的更新语句不正确,因为它没有传递消息ID

我猜它是这样的:

UPDATE user_message
SET is_read=true 
where username = 'john777@gmail.com'
and user_message_id = 123

如果您要将多条消息设置为read,可以通过以下方式执行此操作:

UPDATE user_message
SET is_read=true 
where username = 'john777@gmail.com'
and user_message_id in (123, 234, 456)

这对我来说就像是一个设计缺陷。为什么user_message表有电子邮件?如果用户更改电子邮件会怎样?您应该通过为每个用户提供一个用作外键的唯一(整数)ID来将电子邮件与用户分离。

答案 2 :(得分:0)

根据假设您有Collection个参数说emails,我建议如下:

String sql = "Your statement";
PreparedStatement stmt = conection.prepare(sql);
for(String email : emails){
   stmt.setString(1, email);
   stmt.executeUpdate();
   stmt.clearParameters();
}

我认为这对你有帮助。