1. Abfrage
Zusätzlich zur Abfrage eines einzelnen Datensatzes versuchen wir hier, eine Reihe von Datensätzen abzufragen.
Fügen Sie der IUSMapper -Schnittstelle die folgende Methode hinzu:
List <Bener> GetUsers (String -Name);
Fügen Sie user.xml hinzu:
<resultMap type = "user" id = "userList"> <! resultMap = "userList"> <!-resultMap ist die oben definierte Benutzerliste-> Select * aus `user`, wo Name #{name} </select>Testmethode:
@Test public void queryListTest () {SQLSession Session = SQLSessionFactory.OpenSession (); try {iUSerMapper mapPer = session.getMapper (iUserMapper.Class); LIST <BENE> user> user = mapPer.getUsers ("%a%"); // % repräsentiert jedes Zeichen in SQL. für (Benutzer Benutzer: Benutzer) {log.info ("{}: {}", user.getName (), user.getAddress ()); }} endlich {session.close (); }} Wenn die Abfrage der Konjunktionstabelle zurückgegeben wird, muss das zusammengesetzte Objekt mit dem Schlüsselwort der Assoziation verarbeitet werden.
Wenn der Benutzer Artikel veröffentlichen, kann jeder Benutzer mehrere Artikel veröffentlichen und eine Eins-zu-Viele-Beziehung haben.
(1) Erstellen Sie eine Artikeltabelle und fügen Sie die Testdaten ein:
- fallen in der Tabelle fallen, wenn eine Droptabelle existiert, wenn `article``; - Erstellen Sie eine Tabelle mit dem Namen "Artikel" erstellen Tabelle "article" ("id" in nicht null auto_increment, `user_id` int nicht null,` title` varchar (100) nicht null, `content` text nicht null, primärer Key (` id`)). - Fügen Sie mehrere Testdatensätze hinzu, die in "Artikel" -Werte ("1", "1", "title1", "content1"), ("2", "1", "title2", "content2"), ("3", "1", "title3", "content3"), ('4', '1', ',', ',', ', Content4'), hinzufügen.(2) com.john.hbatis.model.Article Class:
public class Artikel {private int id; privater Benutzerbenutzer; privater String -Titel; private String -Inhalte; // Getters und Setter werden weggelassen}(3) IUSMAPPER hinzufügen:
LIST <Aktion> getarticlesByUserid (int id);
(4) User.xml hinzufügen:
<resultMap type = "com.john.hbatis.model.article" id = "articlelist"> <id column = "a_id" Property = "id" /> <resultal column = "title" property = "title" /> <resultal column = "content" property = "content" /> <Assoziation. Property = "ID" /> <resultal column = "name" property = "name" /> <result column = "address" Property = "Adresse" /> < /assoziation> < /resultmap> <select id = "getarticleByUserid" ParameterType = "int" resultmap = "articlelist"> u.idname, u.Adr. auf a.user_id = u.id und u.id =#{id} </select>(5) Testmethode:
@Test public void getArticlesByUseridTest () {SQLSession Session = SQLSessionFactory.OpenSession (); try {iUSerMapper mapPer = session.getMapper (iUserMapper.Class); Liste <artikels> articles = mapper.getArticlesByUserid (1); für (Artikel Artikel: Artikel) {log.info ("{} - {}, Autor: {}", article.gettitle (), article.getContent (), article.getUser (). getName ()); }} endlich {session.close (); }} Beigefügt:
Zusätzlich zur Definition der Zuordnung von Feldern und Attributen innerhalb des Assoziations -Tags können Sie den Ergebnismap des Benutzers wiederverwenden:
<Association Property = "Benutzer" javatype = "Benutzer" resultMap = "UserList" />
2. hinzugefügt
Fügen Sie der IUSMapper -Schnittstelle die folgende Methode hinzu:
int adduser (Benutzerbenutzer);
User.xml hinzufügen:
<einfügen id = "adduser" parameterType = "user" useGeneratedKeys = "true" keyProperty = "id"> <! Wenn nicht angegeben, kann das Rückgabeobjekt den generierten Wert nicht erhalten -> in den Benutzer (Name, Alter, Adresse) Werte (#{Name},#{Age},#{Adresse}) </einfügen>Testmethode:
@Test public void addUsertest () {user user = new user ("lucy", 102, "Happy District"); SQLSession Session = SQLSessionFactory.OpenSession (); try {iUSerMapper mapPer = session.getMapper (iUserMapper.Class); int betroffeneCount = mapper.adduser (Benutzer); Session.Commit (); // Standard wird nicht automatisch eingereicht. Call session.getConnection (). GetAutoCommit () an log.info ("{} neuer Datensatz wurde erfolgreich eingefügt, dessen ID: {}", betroffener, user.getId ()); } endlich {Session.close (); }}3. Update
Schnittstellenadditionsmethode:
Int UpdateUser (Benutzerbenutzer);
User.xml hinzufügen:
<update id = "updateUser" parameterType = "user"> aktualisieren `user` set Name =#{name}, ay =#{ay}, adress =#{address} wobei id =#{id} </update>Testmethode:
@Test public void updateUsertest () {SQLSession Session = SQLSessionFactory.OpenSession (); try {iUSerMapper mapPer = session.getMapper (iUserMapper.Class); User user = mapPer.getUserById (8); user.setAddress ("zufriedener Bezirk"); int betroffeneCount = mapper.updateuser (Benutzer); // Zusätzlich zu den zu geänderten Attributen müssen auch andere Attribute des Benutzers zugewiesen werden. Andernfalls werden diese Attribute von der Datenbank auf den Anfangswert (Null oder 0 usw.) aktualisiert. Sie können es zuerst abfragen, aber dies erhöht die unnötige Interaktion mit der Datenbank. Die folgenden Bedingungen können dieses Problem vermeiden. log.info ("betroffene Zählung: {}", betroffenerCount); Session.Commit (); } endlich {Session.close (); }}4. Löschen
Schnittstellenadditionsmethode:
int deleteUser (int id);
User.xml hinzufügen:
<delete id = "deleteUser" parameterType = "int"> aus `user`" wobei ID =#{id} </delete> löschen> löschenTestmethode:
@Test public void deleteErtest () {SQLSession Session = SQLSessionFactory.OpenSession (); try {iUSerMapper mapPer = session.getMapper (iUserMapper.Class); int betroffeneCount = mapper.deleteUser (8); log.info ("betroffene Zählung: {}", betroffenerCount); Session.Commit (); } endlich {Session.close (); }}