1. Kaartmethoden ondersteund door mybatis
De door mybatis ondersteunde mappingmethoden omvatten mapper.xml bestanden gebaseerd op xml en mapperinterfaceklassen gebaseerd op java. Er zijn vier hoofdannotaties voor interfacemethoden: @Insert, @Delete, @Update en @Select
2. Hoe te mappen met interface-annotaties
De volgende experimenten zijn allemaal gebaseerd op t_user tabellen en zijn als volgt gestructureerd:
2.1 Verhoog @Insert
Er zijn in principe drie schema's hiervoor: handmatige aanwijzing (applicatielaag), zelf-toevoegende primaire sleutel (datalaag enkele tabel) en het selecteren van primaire sleutel (datalaag meerdere tabel).
1. Handmatig de primaire sleutel specificeren op de applicatielaag
De handmatige methode behandelt de primaire sleutel niet anders en geeft de primaire sleutel een waarde wanneer de applicatielaag het object genereert vóór het invoegen, wat niet verschilt van het normale veld bij invoeging.
In het bovenstaande voorbeeld weet mybatis niet welk veld de primaire sleutel is, en id is het primaire sleutelveld, maar het wordt niet anders behandeld.
Let op dat de #{gebruikersnaam}-methode is om Gebruiker als huidige context te gebruiken, zodat je bij het openen van de attributen van Gebruiker direct de attribuutnaam kunt schrijven.
2. De tabel voegt de primaire sleutel toe
De zelf-incrementerende primaire sleutel komt overeen met de primaire sleutel-backfill in de XML-configuratie, een eenvoudig voorbeeld:
Gebruik Option om overeen te komen met de eigenschappen van de select-tagset in XML, userGeneratordKeys om aan te geven dat je een zelfverhogende primaire sleutel wilt gebruiken, en keyProperty om de veldnaam van het primaire sleutelveld aan te geven.
De zelfverhogende primaire sleutel maakt gebruik van de zelfverhogende functies van de onderliggende database.
3. Selecteer de primaire sleutel
Selecteer de primaire sleutel om een waarde uit de datalaag te genereren en gebruik deze waarde als de waarde van de primaire sleutel.
2.2 Verwijder @Delete
Bij het verwijderen schrijf je gewoon de voorwaarde in de waarde van de @Delete annotatie en geef je een int-type terug als het aantal records dat succesvol is verwijderd.
2.3 Verandering @Update
Bij het wijzigen schrijf je gewoon de SQL-instructie in de waarde van de @Update en geef je een int-type terug om het aantal gewijzigde recordregels aan te geven.
2.4 Check @Select
Queryen is wat ingewikkelder, omdat de query gaat over hoe je de gevonden velden op het object zet, en er zijn meestal drie manieren:
1. Handmatig een alias in de SQL-instructie specificeren om overeen te komen
Bij het schrijven van SQL-instructies wijs je handmatig een alias toe aan elk veld om overeen te komen met de attributen van het object, wat geschikt is voor situaties waarin de naam van het tabelveld en de naam van het objectattribuut sterk verschillen en er niet veel tabelvelden zijn.
2. Gebruik de automatische transformatie van de onderstreepte bult van mybatis
mybatis heeft een optie genaamd mapUnderscoreToCamelCase die geldt wanneer de veldnaam in de tabel hetzelfde is als de naam van het objectattribuut, maar het verschil in onderstijging en bultschrift.
Na het configureren van mapUnderscoreToCamelCase probeert mybatis de underscore om te zetten naar een bult wanneer de gegevens uit de ResultSet op het object worden gezet, en vervolgens de set eraan te koppelen om de attributen te bepalen.
Zet de conversie aan:
Vraag dan:
Als je naar het geprinte resultaat kijkt, worden birth_day attributen in het object gevuld:
3. Gebruik ResultMap
Als de veldnaam van de tabel en de attribuutnaam van het object niet veel hetzelfde zijn en er veel velden in de tabel staan, moet ResultMap worden gebruikt voor aanpassing.
@Results komt overeen met de ResultMap in XML, en je kunt er een id voor opgeven, die gebruikt kan worden om elders te verwijzen, bijvoorbeeld om de bovenstaande Resultaten te verwijzen:
Gebruik @ResultMap om een bestaande ResultMap te verwijzen, die in Java kan worden gedefinieerd met @Results annotaties of in XML met resultMap-tags.
2.5 Voorbeeldcode
User.java
UserMapper.java
3. Samenvatting
Voordelen van het gebruik van interface-annotaties:
1. Het is handiger en sneller om mapping statements te schrijven
Nadelen van het gebruik van interface-annotaties:
1. Het is geschikt voor relatief eenvoudige configuraties, en de interface kan niet worden gemaakt als het te ingewikkeld is.
2. Kan geen dynamische SQL gebruiken, wat smakeloos.
|