博主首页

entityManager执行本地sql,预编译,自定义返回对象

jpa自定义sql

 另一种方式

 

传集合的话还是传集合进去就可以了 ,不用分割成字符串

       List roles=Lists.newArrayList();
        if("1".equals(getType)){
            roles=Lists.newArrayList("地市公司领导","区县公司领导");
        }else if("2".equals(getType)){
            roles=Lists.newArrayList("地市公司部门主任","区县公司部门主任","地市公司配电部专责","区县公司配电部专责");
        }

 like用法

         "        having GROUP_CONCAT(t.ROLE_NAME SEPARATOR ',')  like :roleName";
---------------------------------------------------------------------------------------------------- map.put(
"roleName","%"+vo.getRoleName()+"%");

 

 分页处理

复制代码
    public static <T> RestResult<List<T>> nativeQueryPage(PPage pPage, Class<T> tClass){
        int index=pPage.getPage()==null||pPage.getPage()<=0?1:pPage.getPage();
        int pageSize=pPage.getPageSize()==null||pPage.getPageSize()<=0?10:pPage.getPageSize();
        StringUtils.isEmptyReMsg(pPage.getSql(),"sql不能为空");
        EntityManager entityManager = pPage.getEntityManager();
        StringUtils.isEmptyReMsg(entityManager,"entityManager不能为空");
        String countsql="select count(*) from ( "+pPage.getSql()+" ) countt1";
        Query nativeQuery = entityManager.createNativeQuery(pPage.getSql());
        NativeQueryImplementor implementor = nativeQuery.setFirstResult((index - 1) * pageSize)
                .setMaxResults((index - 1) * pageSize + pageSize)
                .unwrap(NativeQueryImpl.class)
                .setResultTransformer(Transformers.aliasToBean(tClass));
        Query nativeQueryCount = entityManager.createNativeQuery(countsql);
        Optional.ofNullable(pPage.getArgs())
                .orElse(Maps.newHashMap())
                .forEach((k,v)->{
                    implementor.setParameter(k,v);
                    nativeQueryCount.setParameter(k,v);
                });
        List<T> resultList = implementor.getResultList();
        String singleResult = nativeQueryCount.getSingleResult().toString();
        return RestResult.successData(resultList).setTotal(Long.valueOf(singleResult));
    }
复制代码

 

posted @   笑~笑  阅读(125)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2022-03-15 restTemplate处理请求状态非200的逻辑
2022-03-15 Please, upgrade your dependencies to the actual version of core-js.
2022-03-15 Error: Cannot find module '@vue/cli-plugin-babel'
2022-03-15 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序
点击右上角即可分享
微信分享提示