1. Kortlægningsmetoder understøttet af mybatis
De mappingmetoder, som mybatis understøtter, inkluderer mapper.xml filer baseret på xml og mapper-interfaceklasser baseret på Java. Der findes fire hovedannotationer af interface-metoder: @Insert, @Delete, @Update og @Select
2. Hvordan man kortlægger ved hjælp af interface-annoteringer
Følgende eksperimenter er alle baseret på t_user tabeller og er struktureret som følger:
2.1 Forøgelse @Insert
Der findes grundlæggende tre metoder til dette, nemlig manuel betegnelse (applikationslag), selvtilføjende primærnøgle (datalag, enkelt tabel) og valg af primærnøgle (datalag, flere tabeller).
1. Angiv manuelt primærnøglen på applikationslaget
Den manuelle metode behandler ikke primærnøglen anderledes og vil give primærnøglen en værdi, når applikationslagget genererer objektet før indsættelse, hvilket ikke adskiller sig fra det normale felt, når det indsættes.
I eksemplet ovenfor ved mybatis ikke, hvilket felt der er primærnøglen, og id er primærnøglefeltet, men det behandles ikke anderledes.
Bemærk, at #{username}-metoden er at bruge Bruger som den aktuelle kontekst, så når du tilgår Brugerens attributter, kan du direkte skrive attributnavnet.
2. Tabellen tilføjer primærnøglen
Den selvinkrementerende primærnøgle svarer til primærnøgle-backfillen i XML-konfigurationen, et simpelt eksempel:
Brug Option til at svare til egenskaberne for select-tag-sættet i XML, userGeneratordKeys for at angive, at du vil bruge en selv-inkrementerende primærnøgle, og keyProperty for at angive feltnavnet på det primære nøglefelt.
Den selv-inkrementerende primærnøgle bruger de selv-inkrementerende funktioner i den underliggende database.
3. Vælg primærnøglen
Vælg primærnøglen for at generere en værdi fra datalaget og brug denne værdi som værdien af primærnøglen.
2.2 Slet @Delete
Når du sletter, skriver du blot betingelsen i værdien af @Delete-annotationen og returnerer en int-type som antallet af poster, der er blevet slettet med succes.
2.3 Ændring @Update
Når du ændrer den, skal du blot skrive SQL-sætningen i værdien af @Update og returnere en int-type, der angiver antallet af ændrede postlinjer.
2.4 Tjek @Select
Forespørgslen er lidt mere kompliceret, fordi forespørgslen handler om, hvordan man sætter de fundne felter til objektet, og der er som regel tre måder:
1. Angiv manuelt et alias i SQL-udsagnet, så det matcher
Når du skriver SQL-sætninger, tildeles der manuelt et alias til hvert felt, så det matcher objektets attributter, hvilket er velegnet i situationer, hvor tabelfeltets navn og objektattributnavnet er meget forskellige, og der ikke er mange tabelfelter.
2. Brug mybatis' automatiske understregnings-pukkel-transformation
mybatis har en mulighed kaldet mapUnderscoreToCamelCase, som gælder, når feltnavnet i tabellen er det samme som objektets attributnavn, men forskellen i underscore og pukkelskrift.
Efter at have konfigureret mapUnderscoreToCamelCase vil mybatis forsøge at konvertere underscoren til en pukkel ved at sætte dataene i ResultSet til objektet, og derefter sy sættet foran for at sætte attributterne.
Tænd for konverteringen:
Så forespørgsler:
Når man ser på det udskrevne resultat, birth_day attributter indbygges i objektet:
3. Brug ResultMap
Hvis feltnavnet på tabellen og attributnavnet på objektet ikke er meget ens, og der er mange felter i tabellen, bør ResultMap bruges til tilpasning.
@Results svarer til ResultMap i XML, og du kan angive et id for det, som kan bruges til at referere til det andre steder, for eksempel til at referere til ovenstående Results:
Brug @ResultMap til at referere til en eksisterende ResultMap, som kan defineres i Java ved hjælp af @Results annotationer eller i XML med resultMap-tags.
2.5 Eksempelkode
User.java
UserMapper.java
3. Resumé
Fordele ved at bruge interface-annotationer:
1. Det er mere bekvemt og hurtigt at skrive mapping-sætninger
Ulemper ved at bruge interface-annotationer:
1. Den er egnet til relativt simple konfigurationer, og grænsefladen kan ikke udføres, når den er for kompliceret.
2. Ude af stand til at bruge dynamisk SQL, lidt smagløst.
|