/** * 在更新数据库值时,可能需要的判断是否改变值相同 其内部不一定是对象相同的情况下,有可能相对于数据库值是相同的 * * @param odr * @return */ public boolean checkRowEquals4DB(DataRow odr) { if (odr == null) return false; for (DataColumn dc : this.belongToDT.getColumns()) { Object thisv = this.getValue(dc.getName()); Object ov = odr.getValue(dc.getName()); if (thisv == null) { if (ov != null) return false; } else { if (thisv.equals(ov)) continue; if (ov == null) return false; if (thisv instanceof java.util.Date && ov instanceof java.util.Date) { // ((java.util.Date)thisv). // 时间存入数据库之后,纳秒内容会被删除,所以只需要秒相同,就认为相同 long t1 = ((java.util.Date) thisv).getTime() / 1000; long t2 = ((java.util.Date) ov).getTime() / 1000; if (t1 != t2) return false; } } } return true; }
public XmlData toXmlData() { XmlData xd = new XmlData(); for (DataColumn dc : belongToDT.getColumns()) { String n = dc.getName(); Object o = this.getValue(n); if (o != null) xd.setParamValue(n, o); } return xd; }
public void fromXmlData(XmlData xd) { for (DataColumn dc : belongToDT.getColumns()) { String n = dc.getName(); Object ov = xd.getParamValue(n); if (ov != null) { // 适应jdbc数据库访问要求 if ((ov instanceof java.util.Date) && !(ov instanceof java.sql.Timestamp)) { ov = new java.sql.Timestamp(((java.util.Date) ov).getTime()); } this.put(n, ov); } } }