public void testMyObjectUpdateByPrimaryKeySelective() {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
MyObjectMapper mapper = sqlSession.getMapper(MyObjectMapper.class);
MyObject record = new MyObject();
FirstName fn = new FirstName();
fn.setValue("Jeff");
record.setFirstname(fn);
record.setLastname("Smith");
record.setDecimal60field(5);
record.setId1(1);
record.setId2(2);
mapper.insert(record);
MyObject newRecord = new MyObject();
newRecord.setId1(1);
newRecord.setId2(2);
fn = new FirstName();
fn.setValue("Scott");
newRecord.setFirstname(fn);
record.setStartDate(new Date());
int rows = mapper.updateByPrimaryKeySelective(newRecord);
assertEquals(1, rows);
MyObjectKey key = new MyObjectKey();
key.setId1(1);
key.setId2(2);
MyObject returnedRecord = mapper.selectByPrimaryKey(key);
assertTrue(datesAreEqual(newRecord.getStartDate(), returnedRecord
.getStartDate()));
assertEquals(record.getDecimal100field(), returnedRecord
.getDecimal100field());
assertEquals(record.getDecimal155field(), returnedRecord
.getDecimal155field());
// with columns mapped to primitive types, the column is always
// updated
assertEquals(newRecord.getDecimal60field(), returnedRecord
.getDecimal60field());
assertEquals(newRecord.getFirstname(), returnedRecord
.getFirstname());
assertEquals(record.getId1(), returnedRecord.getId1());
assertEquals(record.getId2(), returnedRecord.getId2());
assertEquals(record.getLastname(), returnedRecord.getLastname());
assertEquals(record.getTimefield(), returnedRecord.getTimefield());
assertEquals(record.getTimestampfield(), returnedRecord
.getTimestampfield());
} finally {
sqlSession.close();
}
}