执行前提是要在表中设置唯一性索引 这里description是唯一的
/***
* 根据description判读按是否已存在相同description值* 存在就更新,不存在就插入
* */
@Override
public void insert(User user) {
// TODO Auto-generated method stub
String hsql="INSERT INTO user (id, ip, port, description,time)VALUES(:id,:ip,:port,:description,:time) "+
"ON DUPLICATE KEY UPDATE ip=:ip,port=:port,time=:time";
Transaction tr = null;
Session session=getSession();
try {
tr=session.beginTransaction();
session.createSQLQuery(hsql)
.setString("id", user.getId())
.setString("ip", user.getIp())
.setString("port", user.getPort())
.setString("description", user.getDescription())
.setString("time",user.getNowTime()).executeUpdate();
tr.commit();
session.close();
} catch (Exception e) {
// TODO: handle exception
//releaseSession(session);
e.printStackTrace();
}
}