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

mybatisPlus實(shí)現(xiàn)多表連接分頁動態(tài)查詢方式

 更新時(shí)間:2025年12月24日 16:34:42   作者:紅顏い笑傾城  
文章主要講述了Java開發(fā)中常用的一些設(shè)計(jì)模式和代碼結(jié)構(gòu),包括實(shí)體類(VO)、Mapper接口、Service實(shí)現(xiàn)類(ServiceImpl)等,通過這些組件的合理使用,可以提高代碼的可維護(hù)性和可擴(kuò)展性

mybatisPlus多表連接分頁動態(tài)查詢

實(shí)體類

package com.byx.communitycontrol.common.entity.baseinfo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;

/**
 * 點(diǎn)位信息
 **/
@Data
@TableName(value = "T_DWXX")
public class PointInfo implements Serializable {

    /**
     * 相機(jī)編碼
     */
    @TableField(value = "CAMERAINDEXCODE")
    private String cameraIndexCode;

    /**
     * 點(diǎn)位名稱
     */
    @TableField(value = "NAME")
    private String name;

    /**
     * 區(qū)域編碼
     */
    @TableField(value = "UNITINDEXCODE")
    private String unitIndexCode;

    /**
     * 國標(biāo)編碼
     */
    @TableField(value = "GBINDEXCODE")
    private String gbIndexCode;

    /**
     * 設(shè)備編碼
     */
    @TableField(value = "DEVICEINDEXCODE")
    private String deviceIndexCode;

    /**
     * 緯度
     */
    @TableField(value = "LATITUDE")
    private String latitude;

    /**
     * 經(jīng)度
     */
    @TableField(value = "LONGITUDE")
    private String longitude;

    /**
     * 高度
     */
    @TableField(value = "ALTITUDE")
    private String altitude;

    /**
     * 像素
     */
    @TableField(value = "PIXEL")
    private Integer pixel;

    /**
     * 相機(jī)類別
     */
    @TableField(value = "CAMERATYPE")
    private Integer cameraType;

    /**
     * 安裝位置
     */
    @TableField(value = "INSTALLPLACE")
    private String installPlace;

    /**
     * 矩陣編號
     */
    @TableField(value = "MATRIXCODE")
    private String matrixCode;

    /**
     * 頻道號
     */
    @TableField(value = "CHANNUM")
    private Integer chanNum;

    /**
     * 查看棚
     */
    @TableField(value = "VIEWSHED")
    private String viewShed;

    /**
     * 能力集
     */
    @TableField(value = "CAPABILITYSET")
    private String capabilitySet;

    /**
     * 智能套裝
     */
    @TableField(value = "INTELLIGENTSET")
    private String intelligentSet;


    /**
     * 記錄位置
     */
    @TableField(value = "RECORDLOCATION")
    private String recordLocation;

    /**
     * 云臺控制
     */
    @TableField(value = "PTZCONTROLLER")
    private String ptzController;

    /**
     * 設(shè)備資源類型
     */
    @TableField(value = "DEVICERESOURCETYPE")
    private String deviceResourceType;

    /**
     * 信道類型
     */
    @TableField(value = "CHANNELTYPE")
    private String channelType;

    /**
     * 轉(zhuǎn)換類型
     */
    @TableField(value = "TRANSTYPE")
    private Integer transType;


    /**
     * 更新時(shí)間
     */
    @TableField(value = "UPDATETIME")
    private String updateTime;

    /**
     * 創(chuàng)建時(shí)間
     */
    @TableField(value = "CREATETIME")
    private String createTime;

    /**
     * 狀態(tài)
     */
    @TableField(value = "STATUS")
    private Integer status;

    /**
     * 相機(jī)類型名稱
     */
    @TableField(value = "CAMERATYPENAME")
    private String cameraTypeName;

    /**
     * 能力集名稱
     */
    @TableField(value = "CAPABILITYSETNAME")
    private String capabilitySetName;

    /**
     * 智能設(shè)置名稱
     */
    @TableField(value = "INTELLIGENTSETNAME")
    private String intelligentSetName;

    /**
     * 記錄位置名稱
     */
    @TableField(value = "RECORDLOCATIONNAME")
    private String recordLocationName;

    /**
     * 云臺控制名稱
     */
    @TableField(value = "PTZCONTROLLERNAME")
    private String ptzControllerName;

    /**
     * 設(shè)備資源類型名稱
     */
    @TableField(value = "DEVICERESOURCETYPENAME")
    private String deviceResourceTypeName;

    /**
     *
     * 頻道類型名稱
     */
    @TableField(value = "CHANNELTYPENAME")
    private String channelTypeName;
    /**
     * 轉(zhuǎn)換類型名稱
     */
    @TableField(value = "TRANSTYPENAME")
    private String transTypeName;
    /**
     * 條約類型
     */
    @TableField(value = "TREATYTYPE")
    private String treatyType;
    /**
     * 條約類型名稱
     */
    @TableField(value = "TREATYTYPENAME")
    private String treatyTypeName;
    /**
     * 狀態(tài)名稱
     */
    @TableField(value = "STATUSNAME")
    private String statusName;
}

VO類

package com.byx.communitycontrol.common.vo;

import com.byx.communitycontrol.common.entity.baseinfo.PointInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

@Data
@EqualsAndHashCode(callSuper = true)
public class PointInfoVo extends PointInfo implements Serializable {

    /**
     * 相機(jī)名稱
     */
    private String cameraName;

    /**
     * 區(qū)域名稱
     */
    private String qyName;

    /**
     * IP
     */
    private String complexIp;

    /**
     * 上級IP
     */
    private String parentIp;

}

mapper接口

package com.byx.communitycontrol.gm.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.byx.communitycontrol.common.entity.baseinfo.PointInfo;
import com.byx.communitycontrol.common.vo.PointInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


@Mapper
public interface PointInfoMapper extends BaseMapper<PointInfo> {


    
    //常規(guī)寫法
    @Select("SELECT\n" +
            "\td.CAMERAINDEXCODE,\n" +
            "\td.NAME,\n" +
            "\td.UNITINDEXCODE,\n" +
            "\td.GBINDEXCODE,\n" +
            "\td.DEVICEINDEXCODE,\n" +
            "\tqd.CAMERANAME,\n" +
            "\tqx.NAME AS qyname,\n" +
            "\td.STATUS,\n" +
            "\td.STATUSNAME,\n" +
            "\td.LATITUDE,\n" +
            "\td.LONGITUDE,\n" +
            "\td.ALTITUDE,\n" +
            "\ti.COMPLEXIP,\n" +
            "\ti.PARENTIP,\n" +
            "\td.CREATETIME,\n" +
            "\td.UPDATETIME \n" +
            "FROM\n" +
            "\tT_DWXX d\n" +
            "\tLEFT JOIN T_DWXXIP i ON d.CAMERAINDEXCODE = i.CAMERAINDEXCODE\n" +
            "\tLEFT JOIN T_QY_DW qd ON d.CAMERAINDEXCODE = qd.CAMERAINDEXCODE\n" +
            "\tLEFT JOIN T_QYXX qx ON d.UNITINDEXCODE = qx.INDEXCODE \n" +
            "${ew.customSqlSegment} " +
            "ORDER BY\n" +
            "\td.UPDATETIME DESC")
    IPage<PointInfoVo> getPointInfoPageList(Page<?> page, @Param("ew") Wrapper wrapper);

    //可返回一個List集合,之后再用page.setRecords()方法將集合set進(jìn)去
    @Select("SELECT\n" +
            "\td.CAMERAINDEXCODE,\n" +
            "\td.NAME,\n" +
            "\td.UNITINDEXCODE,\n" +
            "\td.GBINDEXCODE,\n" +
            "\td.DEVICEINDEXCODE,\n" +
            "\tqd.CAMERANAME,\n" +
            "\tqx.NAME AS qyname,\n" +
            "\td.STATUS,\n" +
            "\td.STATUSNAME,\n" +
            "\td.LATITUDE,\n" +
            "\td.LONGITUDE,\n" +
            "\td.ALTITUDE,\n" +
            "\ti.COMPLEXIP,\n" +
            "\ti.PARENTIP,\n" +
            "\td.CREATETIME,\n" +
            "\td.UPDATETIME \n" +
            "FROM\n" +
            "\tT_DWXX d\n" +
            "\tLEFT JOIN T_DWXXIP i ON d.CAMERAINDEXCODE = i.CAMERAINDEXCODE\n" +
            "\tLEFT JOIN T_QY_DW qd ON d.CAMERAINDEXCODE = qd.CAMERAINDEXCODE\n" +
            "\tLEFT JOIN T_QYXX qx ON d.UNITINDEXCODE = qx.INDEXCODE \n" +
            "${ew.customSqlSegment} " +
            "ORDER BY\n" +
            "\td.UPDATETIME DESC")
    List<PointInfoVo> getPointInfoPageList(Page<?> page, @Param("ew") Wrapper wrapper);


    //可用實(shí)體屬性代替查詢元素
    @Select("SELECT\n" +
            "\td.*,\n" +
            "\tqd.cameraName,\n" +
            "\tqx.name AS qyName,\n" +
            "\ti.complexIp,\n" +
            "\ti.parentIp \n" +
            "FROM\n" +
            "\tT_DWXX d\n" +
            "\tLEFT JOIN T_DWXXIP i ON d.cameraIndexCode = i.cameraIndexCode\n" +
            "\tLEFT JOIN T_QY_DW qd ON d.cameraIndexCode = qd.cameraIndexCode\n" +
            "\tLEFT JOIN T_QYXX qx ON d.unitIndexCode = qx.indexCode \n" +
            "${ew.customSqlSegment} " +
            "ORDER BY\n" +
            "\td.updateTime DESC")
    IPage<PointInfoVo> getPointInfoPageList(Page<?> page, @Param("ew") Wrapper wrapper);
}

serviceImpl類

package com.byx.communitycontrol.gm.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.byx.communitycontrol.common.entity.AppPage;
import com.byx.communitycontrol.common.entity.baseinfo.PointInfo;
import com.byx.communitycontrol.common.request.PointInfoPageReq;
import com.byx.communitycontrol.common.vo.PointInfoVo;
import com.byx.communitycontrol.context.helper.MyBatisPlusPageImpl;
import com.byx.communitycontrol.gm.mapper.PointInfoMapper;
import com.byx.communitycontrol.gm.service.IPointInfoService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;

@Service
public class PointInfoServiceImpl extends ServiceImpl<PointInfoMapper, PointInfo> implements IPointInfoService {

    @Resource
    private PointInfoMapper pointInfoMapper;

    @Override
    public AppPage<PointInfoVo> findListByPageCondition(PointInfoPageReq request) {
        Page<PointInfoVo> page = new Page(request.getCurrentPage(), request.getPageSize());

        //方法一:
        QueryWrapper<PointInfoVo> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.hasText(request.getDwName()), "name", request.getDwName());
        queryWrapper.like(StringUtils.hasText(request.getQyName()), "qyName", request.getQyName());
        queryWrapper.eq(request.getStatus() != null, "status", request.getStatus());
        List<PointInfoVo> pointInfoPageList = pointInfoMapper.getPointInfoPageList(page, queryWrapper);
        Page<PointInfoVo> pointInfoVoPage = page.setRecords(pointInfoPageList);

        //方法二:
        QueryWrapper<PointInfoVo> eq = Wrappers.query(new PointInfoVo()).like(StringUtils.hasText(request.getDwName()),
                "d.name",
                request.getDwName()).like(StringUtils.hasText(request.getQyName()), "qx.name",
                request.getQyName()).eq(request.getStatus() != null, "d.status", request.getStatus());
        IPage<PointInfoVo> pointInfoPageList = pointInfoMapper.getPointInfoPageList(page, eq);

        方法三:可將 Wrappers.query(new PointInfoVo()).like(...)... 換成 Wrappers.lambdaQuery(PointInfoVo.class).like(StringUtils.hasText(request.getDwName()),PointInfoVo::getName,
                request.getDwName())...

        return new MyBatisPlusPageImpl<>(pointInfoPageList);
    }
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot項(xiàng)目不占用端口啟動的方法

    SpringBoot項(xiàng)目不占用端口啟動的方法

    這篇文章主要介紹了SpringBoot項(xiàng)目不占用端口啟動的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • java客戶端登陸服務(wù)器用戶名驗(yàn)證

    java客戶端登陸服務(wù)器用戶名驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了java客戶端登陸服務(wù)器用戶名驗(yàn)證的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 詳解Java對象序列化為什么要使用SerialversionUID

    詳解Java對象序列化為什么要使用SerialversionUID

    這篇文章主要介紹了詳解Java對象序列化為什么要使用SerialversionUID,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java 中數(shù)據(jù)庫連接的JDBC和驅(qū)動程序的深入分析

    java 中數(shù)據(jù)庫連接的JDBC和驅(qū)動程序的深入分析

    這篇文章主要介紹了java 中數(shù)據(jù)庫連接的JDBC和驅(qū)動程序的深入分析的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java實(shí)現(xiàn)動態(tài)規(guī)劃背包問題

    Java實(shí)現(xiàn)動態(tài)規(guī)劃背包問題

    本文主要介紹使用java實(shí)現(xiàn)動態(tài)規(guī)劃的背包問題,詳細(xì)使用圖文和多種案例進(jìn)行解析,幫助理解該算法
    2021-06-06
  • Java中枚舉的實(shí)現(xiàn)與應(yīng)用詳解

    Java中枚舉的實(shí)現(xiàn)與應(yīng)用詳解

    這篇文章主要介紹了Java中枚舉的實(shí)現(xiàn)與應(yīng)用詳解,EnumTest中還有一個VALUES數(shù)組,里面存儲著所有的枚舉實(shí)例,調(diào)用values方法時(shí)返回VALUES數(shù)組的clone,需要的朋友可以參考下
    2023-12-12
  • SpringBoot使用validator分組校驗(yàn)實(shí)現(xiàn)方式

    SpringBoot使用validator分組校驗(yàn)實(shí)現(xiàn)方式

    本文詳細(xì)介紹了在SpringBoot中使用分組校驗(yàn)進(jìn)行數(shù)據(jù)驗(yàn)證的兩種方法:使用@Validated注解在控制器層進(jìn)行校驗(yàn)和使用ValidateUtil工具類在任意位置進(jìn)行手動校驗(yàn),通過合理使用驗(yàn)證組和驗(yàn)證方法,可以確保數(shù)據(jù)的正確性和一致性,提高應(yīng)用程序的健壯性和安全性
    2025-11-11
  • 詳解Java實(shí)踐之抽象工廠模式

    詳解Java實(shí)踐之抽象工廠模式

    抽象工廠模式用于產(chǎn)品族的構(gòu)建。抽象工廠是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠是指當(dāng)有多個抽象角色時(shí)使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象
    2021-06-06
  • 簡單了解JAVA變量類型及代碼實(shí)例

    簡單了解JAVA變量類型及代碼實(shí)例

    這篇文章主要介紹了簡單了解JAVA變量類型及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java代碼中4種字符串拼接方式分析

    Java代碼中4種字符串拼接方式分析

    本文主要介紹了Java代碼中4種字符串拼接方式分析,主要介紹了“+”號、StringBuilder、StringJoiner、String#join,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

共和县| 枣阳市| 南岸区| 达尔| 赣州市| 巴彦县| 绵竹市| 泸西县| 娄烦县| 宁蒗| 全南县| 长海县| 都昌县| 清丰县| 临猗县| 保康县| 夹江县| 夹江县| 阿图什市| 全南县| 牡丹江市| 乌苏市| 即墨市| 南溪县| 辽阳县| 策勒县| 洱源县| 房产| 阿图什市| 蚌埠市| 陕西省| 灌南县| 马公市| 阜城县| 玛沁县| 加查县| 临泽县| 湘乡市| 湖口县| 安达市| 大理市|