一、分页样例代码


    try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
       ActionResult result = new ActionResult<>();
       Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
       List ids = new ArrayList<>();
       EntityManager em = emc.get(RecordReadLog.class);
       CriteriaBuilder cb = em.getCriteriaBuilder();
       CriteriaQuery cq = cb.createQuery(String.class);
       Root root = cq.from(RecordReadLog.class);
    Predicate p = cb.equal(root.get(RecordReadLog_.idRecord),wi.getIdRecord().trim());

        if(wi.getStartTime() != null) {
            p = cb.and(p, cb.greaterThanOrEqualTo(root.get(RecordReadLog_.createTime), wi.getStartTime()));
        }

         if(wi.getEndTime()!= null) {
               p = cb.and(p, cb.lessThanOrEqualTo(root.get(RecordReadLog_.createTime), wi.getEndTime()));
        }


        Order order;
        String  sortField = wi.getSortField();
        String  sortType = wi.getSortType();

        if(!StringUtils.isBlank(sortField)) {
            if(sortType.equalsIgnoreCase("asc")) {
                 order =  cb.asc(root.get(sortField));
            }else {
                 order =  cb.desc(root.get(sortField));
            }
        }else {
               order =  cb.desc(root.get("createTime"));
        }

        cq.select(root.get(RecordReadLog_.id)).where(p).orderBy(order);
        TypedQuery typedQuery = em.createQuery(cq);

         int pageIndex = (page-1)*size;
         int pageSize = size;
         typedQuery.setFirstResult(pageIndex);
         typedQuery.setMaxResults(pageSize);
         ids =  typedQuery.getResultList();

         TypedQuery tqCount = em.createQuery( cq.select(root.get(RecordReadLog_.id)).where(p));
         List allid = tqCount.getResultList();
         Long  tpsize =  (long) allid.size();

         CriteriaQuery cqRecord = cb.createQuery(RecordReadLog.class);        
         Predicate pRecord = cb.isMember(root.get(RecordReadLog_.id), cb.literal(ids));
         Root rootRecord = cqRecord.from(RecordReadLog.class);
         cqRecord.select(rootRecord).where(pRecord).orderBy(order);
         List os = em.createQuery(cqRecord).getResultList();

        List wos = Wo.copier.copy(os);

        result.setData(wos);
        result.setCount(tpsize);
        return result;
    }

二、过滤器url权限说明

Anonymous:匿名访问权限
Cipher:这个应该是服务器之间访问权限
Manager:管理员访问权限
User:普通用户放权权限

三、WI ,WO 说明

wi:接收接口输入参数对象
wo:接口返回参数对象

四、JPA

参考:https://www.w3cschool.cn/java/jpa-entitymanager.html

五、查找对应后台代码过程

1、http://服务器ip:20030/x_program_center/jest/list.html

image.png

2、点击打开具体模块的api界面:

image.png

3、查看代码具体路径:

image.png

4.eclipse里查看具体代码

image.png

推荐文章:

企业办公首页使用说明
2021-02-19
O2OA企业办公首页的导航栏中,有直观清爽的界面、功能丰富的应用。根据企业办公需求随心使用,包含流程管理、会议管理、组织管理、日程管理等等。
数据清理-O2OA平台如何清除测试数据
2021-02-07
当O2OA业务开发、测试完成时,上线前通常需要清除已经存在的测试数据,或者演示数据。O2OA提供命令对指定模块的业务数据进行清除。清除测试数据清除已存在的业务数
系统维护-如何压缩过大的H2数据库文件
2021-02-25
平台自带的H2数据库在使用过程中会随着数据量的增加而增长,但是并不会在删除数据后自动缩小。所以O2OA提供了数据库压缩命令用于缩小数据库占用的空间。
系统配置-自定义消息提醒
2021-02-25
O2OA平台设计了灵活的消息提醒数据交互方式,开发者可以根据自己的需要,来消费消息提醒数据,也可以将消息提醒数据接入到Kafka消息中间件来实现消息的准实时提醒
门户开发-门户脚本开发
2021-03-01
O2OA提供的门户管理平台可以让用户自由地为企业定制符合企业特色的门户系统,门户页面。可以让页面展现的内容真正满足企业自身的需求。本文主要介绍如何在O2OA中使
流程设计-流程表单事件功能介绍
2021-02-26
本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以
服务集成-平台数据字典API使用说明
2021-03-15
O2OA允许用户通过脚本灵活地完成数据字典相关的增删查改操作。本文主要介绍完成平台数据字典操作相关的API和使用方式
组织人员同步-封装Api接口完成同步
2021-04-07
O2OA允许用户自定义接口和代码逻辑来完成系统与第三方业务系统的数据同步,人员和组织的同步。本文主要介绍组织人员同步的数据操作规范。
创建组织架构及个人信息
2021-02-19
本篇主要简单讲述初次使用O2OA如何创建人员信息,组织职务信息以及组织成员和组织职务管理的实际意义及使用场景。
移动办公-O2OA微信小程序说明
2021-03-01
O2OA平台拥有配套的原生开发的安卓和IOS移动APP,开发者在拥有公网IP或者域名的服务器上可以轻松体验移动办公环境,并且不会产生任何费用。本篇主要介绍如何配

results matching ""

    No results matching ""