表结构:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_ame` varchar(50) DEFAULT NULL, `user_age` int(11) DEFAULT NULL, `user_address` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) );
CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `title` varchar(100) DEFAULT NULL, `content` text, `blog_id` int(11) NOT NULL, PRIMARY KEY (`id`) );
CREATE TABLE `blog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) );
mybatis-cfg.xml:
Article实体类:
public class Article { private int id; private User user; //Article类中有一个User类。 private String title; private String content;
…… //getter、setter
}
Article.xml:
select user.id user_id,user.userName user_userName,user.userAddress user_userAddress,
article.id article_id,article.title article_title,article.content article_content
from user,article
where user.id=article.userid and user.id=#{id}
Blog实体类:
public class Blog { private int id; private String title; private List
…… //getter、setter
}
Blog.xml:
select user.id user_id,user.userName user_userName,user.userAddress user_userAddress,
article.id article_id,article.title article_title,article.content article_content,
blog.id blog_id, blog.title blog_title
from user,article,blog
where user.id=article.userid and blog.id=article.blogid and blog.id=#{id}
注意:如果是一对多的分页,不能在最后limit,需要在主表先分页。
主表分页的时候,有可能从表没有数据,分页数量可能还是不对,可添加条件来处理。
一对多分页处理示例:
SELECT
FROM
insurance_product pro
LEFT JOIN insurance_clause cla ON pro.id = cla.product_id
pro.id IN (SELECT ip.id FROM (
SELECT id FROM insurance_product WHERE 1 = 1
AND id IN (SELECT DISTINCT product_id FROM `insurance_clause`)
and merchant_id = #{merchantId}
LIMIT ${start},${pageSize}
) AS ip
)
and cla.is_delete = 0
ORDER BY (CASE
WHEN pro.platform = 2 THEN 1
WHEN pro.platform = 3 THEN 2
WHEN pro.platform = 1 THEN 3
ELSE 4 END)