1. Mybatise toetatud kaardistamismeetodid
Mybatise toetatud kaardistamismeetodid hõlmavad mapper.xml xml-põhiseid faile ja java-põhiseid mapperi liidese klasse. On neli peamist liidese meetodi annotatsiooni: @Insert, @Delete, @Update ja @Select
2. Kuidas kaardistada liidese annotatsioonide abil
Järgnevad katsed põhinevad kõik t_user tabelitel ja on üles ehitatud järgmiselt:
2.1 Suurenda @Insert
Selleks on põhimõtteliselt kolm skeemi: käsitsi määramine (rakenduskiht), iselisanduv primaarvõti (andmekiht üks tabel) ja esmase võtme valimine (andmekiht mitmetabel).
1. Määra käsitsi põhivõti rakenduse kihil
Käsitsi meetod ei käsitle esmavõtit erinevalt ning annab primaarvõtmele väärtuse, kui rakenduskiht genereerib objekti enne sisestamist, mis ei erine tavapärasest väljast sisestamisel.
Ülaltoodud näites ei tea mybatis, milline väli on primaarne võti ja id on primaarne võtmeväli, kuid seda ei käsitleta erinevalt.
Pane tähele, et #{kasutajanime} meetod on kasutada Kasutajat praeguse kontekstina, nii et kasutaja atribuutidele juurdepääsul saab otse kirjutada atribuudi nime.
2. Tabel lisab primaarvõtme
Isekasvav primaarvõti vastab XML-konfiguratsioonis põhivõtme tagasitäitmisele, lihtne näide:
Kasuta Optioni, et vastata XML-i select-sildi omadustele, userGeneratordKeys, et näidata, et soovid kasutada isekasvavat esmavõtit, ja keyProperty, et määrata primaarvõtme välja nimi.
Isekasvav primaarvõti kasutab aluseks oleva andmebaasi isekasvavaid omadusi.
3. Vali põhivõti
Vali primaarvõti, et genereerida väärtus andmekihilt, ja kasuta seda väärtust primaarvõtme väärtusena.
2.2 Kustuta @Delete
Kustutamisel kirjuta lihtsalt tingimus @Delete annotatsiooni väärtuses ja tagasta int tüüp kui edukalt kustutatud kirjete arv.
2.3 Muuda @Update
Muutmisel kirjuta lihtsalt SQL-lause @Update väärtuses ja tagasta int tüüp, mis näitab muudetud kirjeridade arvu.
2.4 Kontrolli @Select
Päringute tegemine on veidi keerulisem, sest päring hõlmab leitud väljade seadistamist objektile ning tavaliselt on kolm võimalust:
1. Määra käsitsi alias SQL-lauses, et see vastaks
SQL-lauseid kirjutades määra igale väljale käsitsi alias, et see sobiks objekti atribuutidega, mis sobib olukordadeks, kus tabeli välja ja objekti atribuudi nimi on väga erinevad ning tabelivälju on vähe.
2. Kasuta mybatise automaatset allajoonitud kühmu teisendust
mybatis-il on valik nimega mapUnderscoreToCamelCase, mis kehtib siis, kui tabeli välja nimi on sama mis objekti atribuudi nimi, kuid erinevus allkriipsu ja kühmu kirjutamises.
Pärast mapUnderscoreToCamelCase'i seadistamist püüab mybatis alakriipsu teisendada kühmuks, kui määrab ResultSetis leiduvad andmed objektile, ja seejärel ühendab komplekti ees, et määrata atribuudid.
Lülita konversioon sisse:
Seejärel küsi:
Vaadates trükitud tulemust, on birth_day atribuudi täidetud objektiga:
3. Kasuta ResultMapi
Kui tabeli välja nimi ja objekti atribuudi nimi ei ole palju samad ning tabelis on palju välju, tuleks kohandamiseks kasutada ResultMap'i.
@Results vastab ResultMapile XML-is ning selle jaoks saab määrata id, mida saab kasutada selle viitamiseks mujal, näiteks ülaltoodud tulemuste viitamiseks:
Kasuta @ResultMap, et viidata olemasolevale ResultMapile, mida saab defineerida Java-s @Results annotatsioonide abil või XML-is resultMap-siltide abil.
2.5 Näidiskood
User.java
UserMapper.java
3. Kokkuvõte
Liidese annotatsioonide kasutamise eelised:
1. Kaardistuslausete kirjutamine on mugavam ja kiirem
Liidese annotatsioonide kasutamise puudused:
1. See sobib suhteliselt lihtsateks konfiguratsioonideks ja liidest ei saa teha, kui see on liiga keeruline.
2. Dünaamilist SQL-i ei saa kasutada, natuke maitsetu.
|