我有两张表,比如一张是会议表t_meet,有MID(会议ID),标题,内容.
还有另一张表是存放参与者的表t_partners,有id,名字,mid(该参与者所属的会议编号).
一个会议记录对应多个参与者记录.
当我要更新这个会议记录的时候,并且也在程序的另外地方修改了参与者人员列表.
那么我在DAO实现类中要怎样才能实现对t_partners的更新.


MeetBean.class中的定义:

public class MeetBean {

/** mid property 会议编号*/
private Long mid;


/** partners property 参与者(存放的是参与者id组成的数组)*/
private String[] partners;


/** title property 会议主题*/
private String title;
//get/set方法就贴出来了

}
DAO实现类中:
/**
* 修改会议
* @param meetBean
* @return
*/
public boolean updateMeet(final MeetBean meetBean)
{
String meetSql="update t_meet set title=?,starttime=?,endtime=?,boardroom=? where mid=?";
this.getJdbcTemplate().update(meetSql, new PreparedStatementSetter()
{
public void setValues(PreparedStatement ps) throws SQLException {
// TODO Auto-generated method stub

ps.setString(1, meetBean.getTitle());
ps.setDate(2, new java.sql.Date(meetBean.getStartTime().getTime()));
ps.setDate(3, new java.sql.Date(meetBean.getEndTime().getTime()));
Long bid=Long.parseLong(meetBean.getBoardroom());
ps.setLong(4, bid);
ps.setLong(5, meetBean.getMid());
}

});//上面完成了我对t_meet表的修改
// 如果我修改了参与者列表 对于t_partners我要怎么更新?



return true;
}



回答:
更新1:n比较麻烦,有2个标准做法
1 循环,检查现有的数据,如果数据库里没有,则insert,如果有,则update,如果数据库有,本地有,则delete
这个一般用于有外键的情况,不能随便删除明细数据的情况。
2 删除所有明细,重新insert明细数据,如果没有外键,(一般你能编辑,就不应该有外键了,否则是设计问题)这个方法简单好用。
快乐渡过每一天,减肥坚持每一天