jeesite4返回多行扩展列

entity

@Table(name="tbl_interested", alias="a", columns={
		@Column(name="id", attrName="id", label="id", isPK=true),
		@Column(name="interested_user_id", attrName="interestedUserId", label="关注人"),
		@Column(name="be_interested_user_id", attrName="beInterestedUserId", label="被关注人"),
		@Column(name="interested_time", attrName="interestedTime", label="关注时间"),
		@Column(includeEntity=DataEntity.class),
		@Column(name="del_flag", attrName="delFlag", label="删除标记"),
	},extColumnKeys="extColumn,extColumn2",joinTable={
		@JoinTable(type= JoinTable.Type.LEFT_JOIN, entity= AppUser.class, alias="u",
				on="a.interested_user_id = u.id",
				attrName="appUser",
				columns={
						@Column(name="id", label="用户id"),
						@Column(name="nick_name", label="昵称", queryType=QueryType.LIKE),
						@Column(name="real_name", attrName="realName", label="真实姓名"),
				}),
		@JoinTable(type= JoinTable.Type.LEFT_JOIN, entity= AppUser.class, alias="au",
				on="a.be_interested_user_id = au.id",
				attrName="byAppUser",
				columns={
						@Column(name="id", label="用户id"),
						@Column(name="nick_name", label="昵称", queryType=QueryType.LIKE),
						@Column(name="real_name", attrName="realName", label="真实姓名"),
				})
}, orderBy="a.update_date DESC"
)

/**
	 *  扩展列,关注人是否关注被关注人,1代表关注0代表没有
	 */
	private Long extColumn;
	/**
	 * 扩展列2,被关注人是否关注关注人,1代表关注0代表没有
	 */
	private Long extColumn2;
	// 省略get/set

extColumnKeys后面写需要返还的属性,如果只需要返回一列后面跟一个参数即可

基础service

public Page<Interested> findPage(Page<Interested> page, Interested interested) {
        // 添加扩展列,查询子表个数(子查询)
        String extColumn = "(SELECT count(id) FROM "+ MapperHelper.getTableName(interested) +
                " WHERE interested_user_id=u.id and be_interested_user_id=au.id) AS \"extColumn\","+
                " (SELECT count(id) FROM "+ MapperHelper.getTableName(interested) +
                " WHERE interested_user_id=au.id and be_interested_user_id=u.id) AS \"extColumn2\"";
        interested.getSqlMap().add("extColumn", extColumn);
        return super.findPage(interested);
    }

同样如果是多列后面拼接就行,一列只需要前两行,后面的as对应entity里定义的实体

自己业务实现service

@ExceptionHandler(Exception.class)
    //@Cacheable(value = "ListAttentionInfoResponse", key = "'ListAttentionInfoRequest'+#request.getId()+#request.getPageNum()+#request.getPageSize()")
    public ListAttentionInfoResponse listAttentionInfo(ListAttentionInfoRequest request) {
        ListAttentionInfoResponse response = new ListAttentionInfoResponse();
        // 获取我的关注信息
        Interested interested = request.buildInterestedUserId(request);
        AttentionVo vo = new AttentionVo();
        Page<Interested> page = interestedService.findPage(new Page<>(), interested);
        boolean flag = page.getPageNo() < page.getLast();
        List<AttentionVo> attentionVoList = vo.build(page.getList());
        log.info("关注信息列表的长度为" + page.getList().size());
        response.setLastPageFlag(flag);
        response.setAttentionList(attentionVoList);
        response.ok("获取关注列表信息成功");
        return response;
    }

调用findPage时多加入一个分页参数即可

猜你喜欢

转载自blog.csdn.net/qq_41000382/article/details/88423538