Ich habe kürzlich objektorientiertes Design studiert. Bei der Verwendung von Domänenobjekten scheint das Vorhandensein geeigneter Klassen in der Datenbank problematisch zu sein. Ich hatte gehofft, den aus der Datenbank erhaltenen Wert direkt in Form eines Domänenobjekts zu erhalten: frowning2:
Ich lerne noch, also habe ich versucht, MyBatis als eine Lösung zu verwenden. Ich würde gerne wissen, ob es einen guten Weg gibt, den Wert aus der Datenbank zu erhalten: bow:
Rufen Sie die MeetingRoom-Klasse mit MyBatis ab
public class MeetingRoom {
private int id;
private String name;
...
}
@Mapper
public interface MeetingRoomMapper {
MeetingRoom findById(int roomId);
}
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.tutorial.MeetingRoomMapper">
<select id="findById" resultType="com.spring.tutorial.MeetingRoom">
SELECT
room_id as id,
room_name as name
FROM
meeting_room
WHERE
room_id = #{room_id}
</select>
</mapper>
Wenn Sie den Rückgabewert von findById der Mapper-Klasse und MeetingRoom als ResultType der Mapper-Datei angeben, wird dieser in Form von MeetingRoom zurückgegeben. Da der Spaltenname und der Eigenschaftsname übereinstimmen müssen, werden sie auch in der AS-Klausel angegeben.
Ändern Sie die MeetingRoom-ID vom Typ int in die ID-Klasse.
public class MeetingRoom {
//Zum Wertobjekt wechseln
private Id id;
private String name;
...
}
public class Id {
private static final int MIN = 1;
private Integer value;
Id(int value) {
if (value < MIN) throw new IllegalArgumentException("Unzulässiger Wert. Wert:" + value);
this.value = value;
}
...
}
Verwenden Sie ResultMap, um die ID-Klasse und die MeetingRoom-Klasse festzulegen.
<resultMap id="IdMap" type="com.spring.tutorial.Id" >
<id property="value" column="room_id" />
</resultMap>
<resultMap id="MeetingRoomMap" type="com.spring.tutorial.MeetingRoom">
<result property="name" column="room_name" />
<association property="id" resultMap="IdMap"/>
</resultMap>
<select id="findById" resultMap="MeetingRoomMap">
SELECT * FROM meeting_room WHERE room_id = #{room_id}
</select>
Ändern Sie den ResultType von SELECT in ResultMap und geben Sie die ResultMap von MeetingRoom an. Verwenden Sie ** Zuordnung **, um ResultMap in ResultMap zu verwenden. Wenn die Eigenschaft desselben Objekts ein Ergebnis enthält, seien Sie vorsichtig, da ein Fehler auftritt, wenn Sie die folgende Zuordnung nicht beschreiben: point_up_2_tone1:
Der Inhalt des Elementtyps "resultMap" muss mit "(Konstruktor ?, ID *, Ergebnis *, Zuordnung *, Sammlung *, Diskriminator?)" Übereinstimmen.
MyBatis ist gut, weil Sie die Anzahl der praktischen Klassen in der Datenbank nicht erhöhen müssen: entspannt:
Grundsätze des Systemdesigns, die vor Ort nützlich sind mybatis - Mapper XML-Datei
Recommended Posts