您现在的位置是:主页 > news > 网站用什么语言好/seo优化网站

网站用什么语言好/seo优化网站

admin2025/6/6 19:39:54news

简介网站用什么语言好,seo优化网站,做网站为什么要钱,山东裕达建设工程咨询有限公司网站分页自定义vo 分页方法1(不支持vo) 使用mybatisplus分页的方式有两种, 一种是service提供的接口: // 无条件分页查询 IPage<T> page(IPage<T> page); // 条件分页查询 IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper); // 无条件分页…

网站用什么语言好,seo优化网站,做网站为什么要钱,山东裕达建设工程咨询有限公司网站分页自定义vo 分页方法1(不支持vo) 使用mybatisplus分页的方式有两种, 一种是service提供的接口: // 无条件分页查询 IPage<T> page(IPage<T> page); // 条件分页查询 IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper); // 无条件分页…

分页自定义vo

分页方法1(不支持vo)

使用mybatisplus分页的方式有两种, 一种是service提供的接口:

// 无条件分页查询
IPage<T> page(IPage<T> page);
// 条件分页查询
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper);
// 无条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page);
// 条件分页查询
IPage<Map<String, Object>> pageMaps(IPage<T> page, Wrapper<T> queryWrapper);

这种比较常用, 如:

IPage<User> page = userService.page(page);

但是这种的话返回分页结果是和service类指定的一样的实体. 很多场景下不符合我们返回给前端的xxxVo类, 还需要手动转一次.

可能是先入为主, 也可能是这种写法最简单, 以前一直以为是只能这样, 然后需要手动转一次
如下手动copyProperties


Page<ResultVO> resultPage = new Page<ResultVO>();
List<ResultVO> resultList = new ArrayList<ResultVO>();
// 使用MybatisPlus查询
Page<PayTradeOrderEntity> page = this.selectPage(new Query<PayTradeOrderEntity>(params).getPage(),null);// 循环
List<PayTradeOrderEntity> records = page.getRecords();
for (PayTradeOrderEntity record : records) {ResultVO vo = new ResultVO();BeanUtil.copyProperties(record, vo);resultList.add(vo);
}

分页方法2(支持vo)

其实mp还有另一种自定义xml的分页写法(配上分页插件后), 只不过以前没怎么用过这种写法, 也不确定是不是也限定了model类型返回
官网介绍分页插件

这种只要我们写的vo能在xml里sql查询字段对得上(用as别名), returnType指定为vo类即可

IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
// or (class MyPage extends Ipage<UserVo>{ private Integer state; })
MyPage selectPageVo(MyPage page);
// or
List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);
结合QueryWrapper

可能有人觉得还是想用wrapper在代码里写筛选条件, 那么可以结合一起用

IPage<PurchasePlan> listWithZj(Page page, @Param(Constants.WRAPPER) Wrapper<T> wrapper);

ew变量来表示QueryWrapper

 <select id="listWithZj" resultType="org.jeecg.modules.gz.purchase.entity.PurchasePlan">select a.*,case when b.project_id is null then 0 else 1 end hasLz from gz_purchase_plan aleft join projectlz bon a.id=b.plan_id${ew.customSqlSegment}</select>

或者sql里自带一些条件

select * from meet_reserve_room rleft join meet_reserve_order oon r.order_id=o.idwhere o.`status` is null or o.`status`!=2<if test="ew != null"><if test="ew.nonEmptyOfWhere">AND</if>${ew.sqlSegment}</if>
QueryWrapper<T> wrapper = new QueryWrapper<T>();wrapper.eq("r.room_id",vo.getRoomId());wrapper.in("r.meet_date",dates);List<ReserveRoom> list = reserveRoomService.listNormal(wrapper);

这种写法是支持VO自定义类型返回分页结果的

附: 分页方法一的转化优化

对于分页一, 我们通常是把records里的数据取出来, 然后遍历, copyProperties到Vo再收集

其实Page有一个方法convert(), 它支持让我们把结果进行处理

    default <R> IPage<R> convert(Function<? super T, ? extends R> mapper) {List<R> collect = this.getRecords().stream().map(mapper).collect(toList());return ((IPage<R>) this).setRecords(collect);}

其实就是相当于帮我们写了一部分代码. 处理过程还是一样的.

举例:

// 使用MybatisPlus查询......
Page<InterestEntity> resultPage = new Page();// 最终返回分页对象
IPage<InterestProcessVO> convertPage = resultPage.convert(result -> {InterestProcessVO vo = new InterestProcessVO();BeanUtil.copyProperties(result, vo)return vo;
});