您的位置:

MyBatis返回List集合

一、MyBatis查询返回List

在MyBatis中,我们经常需要查询出一些数据集合。而数据集合最常用的形式就是List。通过MyBatis查询操作可以直接返回一个List,或者使用resultType指定List中元素的类型。

以下是使用resultType指定List中元素类型的示例:

//Mapper.xml
<select id="getUserList" resultType="com.example.User">
  SELECT id, name, age FROM user
</select>
//Java代码
List<User> userList = sqlSession.selectList("getUserList");

接下来是直接返回List的示例:

//Mapper.xml
<select id="getNameList" resultType="java.lang.String">
  SELECT name FROM user
</select>
//Java代码
List<String> nameList = sqlSession.selectList("getNameList");

二、MyBatis返回List

有时候需要返回一个List,而这个List中的元素是由Map表示的。这种返回方法非常的灵活,可以返回任意列的任意组合,它的返回结果可以用Map调用的方法来遍历里面的内容。

以下是使用Map作为List元素类型的示例:

//Mapper.xml
<select id="getUserListMap" resultType="java.util.Map">
  SELECT id, name FROM user
</select>
//Java代码
List<Map> userListMap = sqlSession.selectList("getUserListMap");

for(Map map : userListMap){
    System.out.println("id: " + map.get("id") + " name: " + map.get("name"));
}

三、MyBatis返回List类型

有时候我们想返回一个List,但是这个List不一定是我们自定义的类型,而可能是List里面包含数组或其他类型的元素。这种情况下,我们可以使用Java自带的List类型来方便地接收。

以下是返回List类型的示例:

//Mapper.xml
<select id="getBoardList" resultMap="boardMap">
    SELECT * FROM board
</select>
//Java代码
List list = sqlSession.selectList("getBoardList");

四、MyBatis返回List结果集

有时候我们需要将查询结果包装为一个Map类型的List返回,这种情况下我们可以使用resultMap来处理。

以下是返回Map类型的List的示例:

//Mapper.xml
<resultMap id="boardMap" type="com.example.Board">
    <id property="boardId" column="board_id"/>
    <result property="boardName" column="board_name"/>
    <result property="boardDesc" column="board_desc"/>
</resultMap>

<select id="getBoardListMap" resultMap="boardMap">
    SELECT * FROM board
</select>
//Java代码
List<Map> boardListMap = sqlSession.selectList("getBoardListMap");

for(Map map : boardListMap){
    System.out.println("board_id: " + map.get("boardId") + " board_name: " + map.get("boardName") + " board_desc: " + map.get("boardDesc"));
}

五、MyBatis返回List套List

有时候我们需要返回一个List集合,并且这个List集合中的元素也是List类型的,我们可以称之为List套List。这种情况下我们可以使用MyBatis的resultType为List,然后在resultMap中指定多个result标签对应多个JavaBean。

以下是返回List套List的示例:

//Mapper.xml
<resultMap id="postMap" type="com.example.Post">
    <id property="postId" column="post_id"/>
    <result property="postTitle" column="post_title"/>
    <result property="postContent" column="post_content"/>
</resultMap>

<resultMap id="commentMap" type="com.example.Comment">
    <id property="commentId" column="comment_id"/>
    <result property="commentContent" column="comment_content"/>
</resultMap>

<select id="getPostCommentList" resultMap="postMap">
    SELECT * FROM post
</select>
//Java代码
List<Post> postList = sqlSession.selectList("getPostCommentList");

for(Post post : postList){
    List<Comment> commentList = post.getCommentList();

    for(Comment comment : commentList){
        System.out.println("post_id: " + post.getPostId() + " post_title: " + post.getPostTitle() + " comment_id: " + comment.getCommentId() + " comment_content: " + comment.getCommentContent());
    }
}

六、MyBatis返回List

有时候我们需要返回一个String类型的List,可以使用resultType为String。

以下是返回String类型List的示例:

//Mapper.xml
<select id="getCourseList" resultType="java.lang.String">
    SELECT course_name FROM course
</select>
//Java代码
List<String> courseList = sqlSession.selectList("getCourseList");

七、MyBatis返回List对象

有时候我们需要将查询结果包装为一个自定义的类型,而且这个类型是一个Collection子类,比如List。

以下是返回自定义类型的List的示例:

//Mapper.xml
<resultMap id="userMap" type="com.example.User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="age" column="age"/>
</resultMap>

<select id="getUserList2" resultMap="userMap">
    SELECT * FROM user
</select>
//Java代码
List<User> userList = sqlSession.selectList("getUserList2");

八、MyBatis返回List集合

有时候我们需要将查询结果包装为一个Map的List集合。

以下是返回Map类型的List的示例:

//Mapper.xml
<select id="getUserList3" resultType="java.util.Map">
    SELECT * FROM user
</select>
//Java代码
List<Map> userListMap = sqlSession.selectList("getUserList3");