一、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");