Een datamapper is het object wat tussen je database (je model) en je controller in hangt. Het idee achter een datamapper is het dat je een object creëert waarin je functies stopt om bepaalde handelingen de verrichten in je database. Zeg dat je zoals je aangeeft een landen tabel hebt waar je gegeven uit ophaalt en terug in stopt dan heb je een datamapper met wellicht de functies:
- readCountry(id)
- readCountrys(void, array id)
- updateCountry(id, array data)
- updateCountrys(array id, array data)
- deleteCountry(id)
- deleteCountrys(array id)
- createCountry(array data)
Het feit dat je niet rechtstreeks een database query draait maar via een datamapper werkt heeft als handigheid mocht je bijvoorbeeld ooit de tabel wijzigen dan hoef je alleen je datamapper aan te passen om het op heel je website aan te passen. Daarnaast als je een andere database engine erachter hangt hoef je ook alleen je datamapper aan te passen.
Met CI doe je al voornamelijk datamapping doormiddel van je model. Binnen je moddel map je alle data die je nodig hebt uit een specifieke tabel of een combinatie van tabellen en kan je uiteraard ook functies toevoegen die je anders via een helper zou doen. (readTop10Countrys() bijvoorbeeld).