In diesem Schritt lernst du, wie du dynamische SQL verwendest, um die Kursinformationen mit den Kursnummern "1,2,3" im Batch abzufragen.
-
Öffnen Sie die Datei CourseMapper.java
im Verzeichnis /org/lanqiao/mapper/
.
-
Implementieren Sie die Methode selectCoursesByIds
in der Schnittstelle CourseMapper
. Diese Methode sollte einen Parameter vom Typ Map<String, Object>
akzeptieren, um die Eingabeparameter zu speichern.
List<Map<String, Object>> selectCoursesByIds(Map<String, Object> params);
-
Öffnen Sie die Datei CourseMapper.xml
im Verzeichnis /org/lanqiao/mapper/
.
-
Implementieren Sie die SQL-Anweisung selectCoursesByIds
im Namensraum CourseMapper
. Verwenden Sie das <foreach>
-Tag, um über die Liste ids
zu iterieren und die IN-Klausel zu erstellen.
<select id="selectCoursesByIds" resultMap="courseResultMap" parameterType="java.util.Map">
SELECT * FROM course WHERE cNo IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
-
Öffnen Sie die Datei MyBatisTest.java
im Verzeichnis /org/lanqiao/test/
.
-
Implementieren Sie die Testmethode testSelectCoursesByIds
, um die Funktionalität von selectCoursesByIds
zu testen.
@Test
public void testSelectCoursesByIds() {
CourseMapper mapper = session.getMapper(CourseMapper.class);
List<Integer> ids = Arrays.asList(1, 2, 3);
Map<String, Object> params = new HashMap<>();
params.put("ids", ids);
List<Map<String, Object>> coursesByIds = mapper.selectCoursesByIds(params);
System.out.println(coursesByIds);
}
Ausführen
Um sicherzustellen, dass der Code funktioniert, achten Sie darauf, die relevanten Klassen in den Code einzufügen.
CourseMapper.java
:
import org.lanqiao.pojo.Course;
import java.util.List;
import java.util.Map;
MyBatisTest.java
:
import java.util.Arrays;
import java.util.HashMap;
Schließlich können Sie den Code in der Konsole kompilieren und ausführen und die Testdateien mit Maven überprüfen, indem Sie die folgenden Befehle verwenden:
cd MyBatisCourseDemo03
mvn test
Sie können sich auf 👀 Vorschau
für eine ausführende Darstellung beziehen.