首页 > 代码库 > 关于mybatis组合查询的分析
关于mybatis组合查询的分析
mybatis 查询思路
第一种思路:
1:先查询,编写查询语句;
2:查询出结果后,将ResultMap 进行拆分, 组合成想要的模型;
这种思路是将联合查询语句组合成一个ResultMap;
<select id="selectBlog" parameterType="int" resultMap="blogResult">selectB.id as blog_id,B.title as blog_title,B.author_id as blog_author_id,A.id as author_id,A.username as author_username,A.password as author_password,A.email as author_email,A.bio as author_biofrom Blog B left outer join Author A on B.author_id = A.idwhere B.id = #{id}</select>注意这个连接,注意结果都被别名为一个唯一且明确的名称。这将使映射变得更多容易。我们可以这样做:<resultMap id="blogResult" type="Blog"> <id property=”blog_id” column="id" /> <result property="title" column="blog_title"/> <association property="author" column="blog_author_id" javaType="Author" resultMap=”authorResult”/></resultMap>
<resultMap id="authorResult" type="Author"> <id property="id" column="author_id"/> <result property="username" column="author_username"/> <result property="password" column="author_password"/> <result property="email" column="author_email"/> <result property="bio" column="author_bio"/></resultMap>
第二种思路:
1:写两个查询语句两个<select>;
2:一个结果集<ResultMap>;结果集理组合对象;
示例:<resultMap id=”blogResult” type=”Blog”> <association property="author" column="blog_author_id" javaType="Author" select=”selectAuthor”/></resultMap><select id=”selectBlog” parameterType=”int” resultMap=”blogResult”> SELECT * FROM BLOG WHERE ID = #{id}</select><select id=”selectAuthor” parameterType=”int” resultType="Author"> SELECT * FROM AUTHOR WHERE ID = #{id}</select>
按照mybatis说明文档的写法是:
不同的地方是你需要告诉MyBatis 如果加载一个联合。MyBatis 可以用两种方式加载:
?? Nested Select: 执行一个其它映射的SQL 语句返回一个期望的复杂类型
?? Nested Results: 使用一个嵌套的结果映射来处理交合的结果的重复的子集
关于mybatis组合查询的分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。