909422229_Jeesite多表联合列表分页实现

时间:2022-08-22 00:47:11


技术交流群:958923746,有学习视频,文档等。

dao.xml中的代码
<select resultType="com.yckj.modules.ts_notices.entity.YsNoticeVo">
select
* --//这里可以直接写*号。比较省事,不过数据比较多,建议针对业务返回数据
from ys_notice_manlist n
JOIN ys_notice a ON a.id = n.notice_id
where n.user_id =#{userId}
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy}
</when>
<otherwise>
order by notice_time DESC
</otherwise>
</choose>
</select>

dao层的代码
List<YsNoticeVo> selectByUserId(@Param("userId") String userId, @Param("page") Page<YsNoticeVo> page);

service的代码
public Page<YsNoticeVo> selectByUserId(Page<YsNoticeVo> page){
User user = UserUtils.getNewUser();
String userId = user.getId();
page.setList(dao.selectByUserId(userId,page));
return page;
}

controller的代码

public Map<String, Object> selectNotice(Integer pageNo, Integer pageSize) {
//根据当前用户id查询出 他的所有通知
//List list = ysNoticeService.selectByUserId();
if(Objects.isNull(pageNo)){
pageNo = 1;
}
if(Objects.isNull(pageSize)){
pageSize = Integer.valueOf(Global.getConfig("page.pageSize"));
}
Page<YsNoticeVo> page = ysNoticeService.selectByUserId(new Page<>(pageNo,pageSize));
Map<String, Object> map = new HashMap<>();
map.put("success","true");
map.put("data",page);
return map;
}

上面是第一种:第二种可以使用Jeesite的注解,在entity中进行配置,做表关联。

909422229_Jeesite多表联合列表分页实现

不过相对而言不怎么便捷。因为如果这个表跟很多表进行关联的话,实体类中就需要写更多的代码。

相对来说不如在Mapper文件中直接写SQL查询。每一种都有各自的优点。

第一种:可以自定义写自己的sql,每次写功能需要自己写mapper  sql。

第二种:不需要写sql,在entity中定义好,在查询列表的时候,可以设置属性自定进行查询。

技术交流群:958923746,有学习视频,文档等。

相关文章