轻量级前端框架助力开发者提升项目效率与性能
977
2023-02-04
Mybatis实现联表查询并且分页功能
今天同学突然问我这个怎么搞。
然后自己搞了一下发现这个玩意有坑。。就记录一下
0. 表结构
person表
cat表
一个person有多个cat
实体类就这么写
1. 实体类
Person实体类
@Data
public class Person implements Serializable {
private static final long serialVersionUID = -70682701290685641L;
private Integer personid;
private String firstname;
private String lastname;
private List
}
Cat实体类
@Data
public class Cat implements Serializable {
private static final long serialVersionUID = -39783356260765568L;
private Integer id;
private String name;
/**
* 猫的历史
*/
private String history;
/**
* 猫的特征
*/
private String features;
/**
* 大概的样子
*/
private String imgurl;
private Integer personId;
}
2. Mapper配置文件
PersonDao.xml
select personid, firstname, lastname, id, name, history, features, imgurl, person_id
from mybatis.person p inner join mybatis.cat c on p.PersonId = c.person_id
and PersonId= #{PersonId}
</mapper>
上面这个是查询单个人的,但是分页没
有这么简单
一开始我以为是这么写的,就简单的加一个limit
select personid, firstname, lastname, id, name, history, features, imgurl, person_id
from mybatis.person p inner join mybatis.cat c on p.PersonId = c.person_id
limit #{page},#{step}
然后查出来就是这个吊样。。。很明显嘛,不对我的胃口。。
后面我准备放弃的时候突然想到可以来一个子查询。。。
然后我就写出了这样的sql
,在子查询里面套子查询。。。实现limit分页的效果
select personid, firstname, lastname, id, name, history, features, imgurl, person_id
from mybatis.person p left join mybatis.cat c on p.PersonId = c.person_id
where PersonId in (select pp.PersonId from (select person.PersonId from person limit 2,2) as pp);
然后sql放到上面就搞好了
跑出来的效果就非常nice
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~