最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatisFlex各種鏈式sql寫法小結(jié)

 更新時間:2025年04月25日 11:40:24   作者:小吳先生666  
本文主要介紹了mybatisFlex各種鏈式sql寫法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.關(guān)聯(lián)LEFT JOIN

 public List<TocAgentUserRelationVO> selectTocAgentUserRelationByPhones(List<String> phones) {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select(TOC_AGENT_USER_RELATION.ALL_COLUMNS)
                .select(TOC_USER_INFO.PHONE,TOC_USER_INFO.NICK_NAME)
                .select(TOC_GROUP_PATIENT_RELATIONS.DOCTOR_ID,TOC_GROUP_PATIENT_RELATIONS.CREATE_TIME.as("bindDoctorTime"))
                .from(TOC_AGENT_USER_RELATION)
                .leftJoin(TOC_USER_INFO).on(TOC_USER_INFO.ID.eq(TOC_AGENT_USER_RELATION.USER_ID))
                .leftJoin(TOC_GROUP_PATIENT_RELATIONS).on(TOC_GROUP_PATIENT_RELATIONS.PATIENT_ID.eq(TOC_AGENT_USER_RELATION.USER_ID))
                .where(TOC_USER_INFO.PHONE.in(phones))
                .orderBy(TOC_AGENT_USER_RELATION.CREATE_TIME.desc());
        return tocAgentUserRelationMapper.selectListByQueryAs(queryWrapper,TocAgentUserRelationVO.class);
    }

2.FIND_IN_SET+LEFT JOIN+AND (OR)寫法

 public <R> Page<R> dietitianList(DietitianListRequest request, Class<R> asType) {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select(TOC_USER_INFO.ID,TOC_USER_INFO.NICK_NAME,TOC_USER_INFO.IMG_URL,TOC_USER_INFO.TAG,TOC_USER_INFO.GOOD_AT,TOC_USER_INFO.GOOD_AT_REMARK)
                .select(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER)
                //計算好評率=好評數(shù)目/總訂單數(shù)目
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.divide(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate"))
                .from(TOC_USER_INFO)
                .leftJoin(TOC_NUTRITIONIST_ORDER_NUM).on(TOC_NUTRITIONIST_ORDER_NUM.USER_ID.eq(TOC_USER_INFO.ID));
        queryWrapper.where(TOC_USER_INFO.PLATFORM.eq(3));
        queryWrapper.where(TOC_USER_INFO.USER_TYPE.eq(UserTypeEnum.TOC_DOCTOR));
        if(request.getIllnessId() != null){
            queryWrapper.and("FIND_IN_SET('" + request.getIllnessId() + "',good_at)");
        }

        if(request.getIllnessIds() != null && !request.getIllnessIds().isEmpty()){
            queryWrapper.and(q -> { for (Long illnessId : request.getIllnessIds()) { q.or("FIND_IN_SET('" + illnessId + "',good_at)"); } });

        }
        queryWrapper.orderBy("goodRate", false);
        PageDomain pageDomain = TableSupport.buildPageRequest();
        return tocUserInfoMapper.paginateAs(pageDomain.getPageNum(), pageDomain.getPageSize(), queryWrapper, asType);
    }

3.修改部分字段寫法

   public void updateReservePhone(NutritionistRequest request) {
        UpdateChain.of(TocUserInfo.class)
                .set(TocUserInfo::getReservePhone, request.getReservePhone())
                .where(TocUserInfo::getId).eq(request.getUserId())
                .update();
    }

4.sum+case_().when().then().else_().end()寫法

    public StatisticsReturnVo selectRegistrationCodeIncome(StatisticsRequest request) {
        QueryWrapper wrapper = QueryWrapper.create()
                .select(sum(case_().when(SYS_WX_PAY_ORDER.USER_FROM.eq(4)).then(SYS_WX_PAY_ORDER.PAY_MONEY).else_(0.00).end()).as("num1"))
                .select(sum(case_().when(SYS_WX_PAY_ORDER.USER_FROM.eq(5)).then(SYS_WX_PAY_ORDER.PAY_MONEY).else_(0.00).end()).as("num2"))
                .select(sum(case_().when(SYS_WX_PAY_ORDER.USER_FROM.eq(2)).then(SYS_WX_PAY_ORDER.PAY_MONEY).else_(0.00).end()).as("num3"))
                .from(SYS_WX_PAY_ORDER)
                .where(SYS_WX_PAY_ORDER.USER_FROM.in(2,4,5));
        wrapper.eq(SysWxPayOrder::getAgentUserId, request.getAgentId());
        wrapper.between(SysWxPayOrder::getCreateTime, request.getBeginTime(), request.getEndTime());
        wrapper.eq(SysWxPayOrder::getPayState,1);
        return sysWxPayOrderMapper.selectOneByQueryAs(wrapper, StatisticsReturnVo.class);
    }

4.count+case_().when().then().else_().end()寫法

public List<TocReserveTimeVo> getReserveTimeSlotRule(TocReserveQuery query) {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select(TOC_RESERVE_TIME_SLOT_RULE.ID.as("slotId"),
                        TOC_RESERVE_TIME_SLOT_RULE.TIME_SLOT,
                        TOC_RESERVE_TIME_SLOT_RULE.MAX_CAPACITY.as("totalAvailable"))
                .select(count(case_().when(TOC_RESERVE_DETAIL.STATUS.eq(1)).then(TOC_RESERVE_DETAIL.ID).else_(null).end()).as("reservedCount"))
                .select(TOC_RESERVE_TIME_SLOT_RULE.MAX_CAPACITY.subtract(count(TOC_RESERVE_DETAIL.ID)) .as("remainingSlots"))
                .from(TOC_RESERVE_TIME_SLOT_RULE)
                .leftJoin(TOC_RESERVE_DETAIL).on(TOC_RESERVE_DETAIL.SLOT_ID.eq(TOC_RESERVE_TIME_SLOT_RULE.ID))
                .where(TOC_RESERVE_TIME_SLOT_RULE.DATE_RULE_ID.eq(query.getId()))
                .groupBy(TOC_RESERVE_TIME_SLOT_RULE.ID, TOC_RESERVE_TIME_SLOT_RULE.TIME_SLOT, TOC_RESERVE_TIME_SLOT_RULE.MAX_CAPACITY);
        return tocReserveTimeSlotRuleMapper.selectListByQueryAs(queryWrapper,TocReserveTimeVo.class);
    }

5.字段加減乘除寫法

 public <R> Page<R> dietitianList(DietitianListRequest request, Class<R> asType) {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select(TOC_USER_INFO.ID,TOC_USER_INFO.NICK_NAME,TOC_USER_INFO.IMG_URL,TOC_USER_INFO.TAG,TOC_USER_INFO.GOOD_AT,TOC_USER_INFO.GOOD_AT_REMARK)
                .select(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER)
                //計算好評率=好評數(shù)目/總訂單數(shù)目
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.divide(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate1"))
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.multiply(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate2"))
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.subtract(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate3"))
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.add(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate4"))
                .from(TOC_USER_INFO)
                .leftJoin(TOC_NUTRITIONIST_ORDER_NUM).on(TOC_NUTRITIONIST_ORDER_NUM.USER_ID.eq(TOC_USER_INFO.ID));
        queryWrapper.where(TOC_USER_INFO.PLATFORM.eq(3));
        queryWrapper.where(TOC_USER_INFO.USER_TYPE.eq(UserTypeEnum.TOC_DOCTOR));
        PageDomain pageDomain = TableSupport.buildPageRequest();
        return tocUserInfoMapper.paginateAs(pageDomain.getPageNum(), pageDomain.getPageSize(), queryWrapper, asType);
    }

6. AND +(字段 or 字段寫法)

  public <R> Page<R> dietitianList(DietitianListRequest request, Class<R> asType) {
        QueryWrapper queryWrapper = QueryWrapper.create()
                .select(TOC_USER_INFO.ID,TOC_USER_INFO.NICK_NAME,TOC_USER_INFO.IMG_URL,TOC_USER_INFO.TAG,TOC_USER_INFO.GOOD_AT,TOC_USER_INFO.GOOD_AT_REMARK)
                .select(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER)
                //計算好評率=好評數(shù)目/總訂單數(shù)目
                .select(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.divide(TOC_NUTRITIONIST_ORDER_NUM.CONSULT_ORDER_NUMBER).as("goodRate"))
                .from(TOC_USER_INFO)
                .leftJoin(TOC_NUTRITIONIST_ORDER_NUM).on(TOC_NUTRITIONIST_ORDER_NUM.USER_ID.eq(TOC_USER_INFO.ID));
        queryWrapper.and(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.eq(1).or(TOC_NUTRITIONIST_ORDER_NUM.GOOD_REPUTATION_NUMBER.gt(1)));

        
        PageDomain pageDomain = TableSupport.buildPageRequest();
        return tocUserInfoMapper.paginateAs(pageDomain.getPageNum(), pageDomain.getPageSize(), queryWrapper, asType);
    }

7.批量修改寫法

  public int batchUntieGroup(List<Long> relationIds) {
        //每次執(zhí)行1000條
        Db.executeBatch(relationIds, 1000, TocGroupPatientRelationsMapper.class
                , (mapper, relationId) -> {
                    //下面是具體的執(zhí)行sql寫法
                    UpdateChain.of(mapper)
                            .set(TocGroupPatientRelations::getGroupId, null)
                            .set(TocGroupPatientRelations::getGroupName, "")
                            .where(TocGroupPatientRelations::getRelationId).eq(relationId)
                            .update();
                });
        return Constants.SUCCESS_CODE;
    }

到此這篇關(guān)于mybatisFlex各種鏈式sql寫法小結(jié)的文章就介紹到這了,更多相關(guān)mybatisFlex鏈式sql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java線程池并發(fā)執(zhí)行多個任務方式

    Java線程池并發(fā)執(zhí)行多個任務方式

    這篇文章主要介紹了Java線程池并發(fā)執(zhí)行多個任務方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java如何自定義類數(shù)組的創(chuàng)建和初始化

    Java如何自定義類數(shù)組的創(chuàng)建和初始化

    這篇文章主要介紹了Java如何自定義類數(shù)組的創(chuàng)建和初始化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringMVC4.3?HandlerExceptionResolver異常處理源碼解析

    SpringMVC4.3?HandlerExceptionResolver異常處理源碼解析

    這篇文章主要為大家介紹了SpringMVC4.3?HandlerExceptionResolver異常處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-09-09
  • 如何創(chuàng)建SpringBoot項目

    如何創(chuàng)建SpringBoot項目

    這篇文章主要介紹了如何創(chuàng)建SpringBoot項目,幫助大家更好的學習和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • Kafka生產(chǎn)者和消費者高級用法及說明

    Kafka生產(chǎn)者和消費者高級用法及說明

    Kafka生產(chǎn)者和消費者高級用法包括事務支持、多線程處理和自定義序列化與反序列化,事務支持確保消息的原子性,多線程處理提高高吞吐量場景下的效率,自定義序列化和反序列化則增強了靈活性,適用于復雜數(shù)據(jù)結(jié)構(gòu)
    2025-11-11
  • Maven介紹與配置+IDEA集成Maven+使用Maven命令小結(jié)

    Maven介紹與配置+IDEA集成Maven+使用Maven命令小結(jié)

    Maven是Apache軟件基金會的一個開源項目,是一個優(yōu)秀的項目構(gòu)建管理工具,它用來幫助開發(fā)者管理項目中的 jar,以及 jar 之間的依賴關(guān)系、完成項目的編譯、測試、打包和發(fā)布等工作,本文給大家介紹Maven介紹與配置+IDEA集成Maven+使用Maven命令,感興趣的朋友一起看看吧
    2024-01-01
  • java如何反編譯jar包并修改class文件重新打包

    java如何反編譯jar包并修改class文件重新打包

    這篇文章主要介紹了java如何反編譯jar包并修改class文件重新打包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java的函數(shù)式接口@FunctionalInterface的使用說明

    Java的函數(shù)式接口@FunctionalInterface的使用說明

    這篇文章主要介紹了Java的函數(shù)式接口@FunctionalInterface的使用說明,我們常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解,需要的朋友可以參考下
    2024-01-01
  • java ArrayList按照同一屬性進行分組

    java ArrayList按照同一屬性進行分組

    這篇文章主要介紹了java ArrayList按照同一屬性進行分組的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • minio的原理、部署、操作方法(十分鐘精通MinIO)

    minio的原理、部署、操作方法(十分鐘精通MinIO)

    MinIO是一個簡單易用的云存儲服務,可以將文件上傳到互聯(lián)網(wǎng)上,方便在不同地方訪問,部署MinIO需要拉取鏡像、啟動端口、設置賬號密碼和映射文件地址,在Spring?Boot中集成MinIO,需要添加依賴、創(chuàng)建客戶端并進行單元測試,感興趣的朋友一起看看吧
    2025-02-02

最新評論

崇义县| 乡宁县| 博乐市| 名山县| 武乡县| 清流县| 周口市| 刚察县| 高安市| 都昌县| 汕头市| 布尔津县| 迭部县| 桃源县| 耒阳市| 田林县| 东至县| 阜宁县| 方城县| 武宁县| 巴林右旗| 秦皇岛市| 高清| 白城市| 酉阳| 钟山县| 云霄县| 盐池县| 肥东县| 沙田区| 常宁市| 永善县| 延津县| 灵寿县| 邢台县| 辽阳市| 铜鼓县| 昭觉县| 慈溪市| 辽中县| 晋城|