Mybatis实现联表查询并且分页功能

网友投稿 977 2023-02-04

Mybatis实现联表查询并且分页功能

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 cats;

}

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小时内删除侵权内容。

上一篇:详解maven BUILD FAILURE的解决办法
下一篇:idea关联maven的使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~