objectFieldNameToTableColumnName = array( 'id' => 'items.itemid', 'name' => 'items.name', 'description' => 'items.descr', 'price' => 'items.price', ); $this->tableName = 'items'; $this->primaryKeyName = 'items.itemid'; } protected function getPrimaryKey(DataObject $object) { return $object->getId(); } protected function setPrimaryKey(DataObject $object, $primaryKey) { $object->setId((int)$primaryKey); } public function createObject() { return new Item(); } } class Item extends DataObject { protected $id; protected $name; protected $description = ''; protected $price = 0.00; } $database = new Database('localhost', 'root', 'root', 'testdb'); $itemMapper = new ItemMapper($database); $item = $itemMapper->findByPrimaryKey(1); var_dump($item); $item = new Item(); $item->setName('test'); $itemMapper->save($item); var_dump($item); $item->setName('test2'); $itemMapper->save($item); var_dump($item);