Springboot整合原生sql进行多表条件查询

在pom.xml引入mysql连接包

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

application-data.properties配置

spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost/operation?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = root
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
 

application.properties中加data配置

server.port=8084
spring.application.name=module-monitor
ribbon.eureka.enabled=false
log.path=log/

spring.profiles.active=data
com.unionPay.unionPayHeartbeatTimeout=60000
com.unionPay.equipmentHeartbeatTimeout=60000

domian层

public class ParamConfigList {

    // 设备编号
    private String num;

    // 设备id
    private String eui_id;

    // id
    private String id;

    // 参数id
    private String param_id;

    // 参数类型
    private String paramType;

    // 当前版本
    private String fromParamVerId;

    // 配置版本
    private String toParamVerId;

    // 配置状态
    private String status;

    // 车站id
    private String stationId;

    public ParamConfigList(String id,String param_id, String eui_id, String num, String paramType, String fromParamVerId,
            String toParamVerId, String status, String stationId) {
        super();
        this.id=id;
        this.num = num;
        this.eui_id = eui_id;
        this.param_id = param_id;
        this.paramType = paramType;
        this.fromParamVerId = fromParamVerId;
        this.toParamVerId = toParamVerId;
        this.status = status;
        this.stationId = stationId;
    }

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getParamType() {
        return paramType;
    }

    public void setParamType(String paramType) {
        this.paramType = paramType;
    }

    public String getFromParamVerId() {
        return fromParamVerId;
    }

    public void setFromParamVerId(String fromParamVerId) {
        this.fromParamVerId = fromParamVerId;
    }

    public String getToParamVerId() {
        return toParamVerId;
    }

    public void setToParamVerId(String toParamVerId) {
        this.toParamVerId = toParamVerId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getEui_id() {
        return eui_id;
    }

    public void setEui_id(String eui_id) {
        this.eui_id = eui_id;
    }

    public String getParam_id() {
        return param_id;
    }

    public void setParam_id(String param_id) {
        this.param_id = param_id;
    }

    public String getStationId() {
        return stationId;
    }

    public void setStationId(String stationId) {
        this.stationId = stationId;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}
 

repository层

package com.gzydt.afc.moduleequipment.domain;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Component;

@Component
public class ParamConfigResp {
    @PersistenceContext
    private EntityManager entityManager;

    @SuppressWarnings("unchecked")

 

/**

* 查找

**/
    public List<Object> findEquiAndParam(String param_type, List<String> nums, List<String> stationIds, int page,
            int size) {
        String sql = "select a.id, a.param_id param_id,b.id eui_id ,b.num ,a.param_type,a.from_param_ver_id,a.to_param_ver_id,a.status,b.station_id "
                + "from param_config a left join mfc_equipment b on (a.equ_id=b.id) where 1=1 ";
        if (!CommonUtil.isEmtpy(param_type)) {
            sql += " and  param_type = '" + param_type + "' ";
        }
        if (nums.size() > 0) {
            sql += " and ( 1!=1 ";
            for (String num : nums) {
                if (!CommonUtil.isEmtpy(num)) {
                    sql += " or  b.num = '" + num + "'  ";
                }
            }
            sql += " ) ";
        }
        if (stationIds.size() > 0) {
            sql += " and ( 1!=1 ";
            for (String station_id : stationIds) {
                if (!CommonUtil.isEmtpy(station_id)) {
                    sql += " or  b.station_id = '" + station_id + "'  ";
                }
            }
            sql += " ) ";
        }

        if (!CommonUtil.isEmtpy(page)) {
            if (!CommonUtil.isEmtpy(size)) {
                sql += "limit  " + page + " ," + size + " ";
            }
        }
        Query query = entityManager.createNativeQuery(sql);
        List<Object> list = query.getResultList();
        return list;
    }

 

}
 

service层

@Component
public class ParamConfigVerServer {

 

@Autowired
    private ParamConfigResp paramConfigResp;

 

public List<Object> findEquiAndParam(String param_type, String nums, String stationIds, int page, int size) {

        List<String> stationIdsList = new ArrayList<>();
        List<String> numsList = new ArrayList<>();
        if (!CommonUtil.isEmtpy(stationIds)) {
            for (String id : stationIds.split(",")) {
                stationIdsList.add(id);
            }
        }
            if (!CommonUtil.isEmtpy(nums)) {
                for (String num : nums.split(",")) {
                    numsList.add(num);
                }
        }
        return paramConfigResp.findEquiAndParam(param_type, numsList, stationIdsList, page, size);
    
    }

 

}

controller层

@RestController
@RequestMapping("parameterConfigure")
@Api(tags = "参数配置接口")
public class ParameterConfigureController {

 

@Autowired
    private ParamConfigVerServer paramConfigVerServer;

 

    @GetMapping("list")
    @ApiOperation(value = "配置列表", produces = MediaType.APPLICATION_JSON_VALUE)
    public JsonResponse<?> list(
            @ApiParam(value = "param_type", required = false) @RequestParam(name = "param_type", required = false) String param_type,
            @ApiParam(value = "nums,多个以英文逗号拼接", required = false) @RequestParam(name = "nums", required = false) String nums,
            @ApiParam(value = "stationIds,多个以英文逗号拼接", required = false) @RequestParam(name = "stationIds", required = false) String stationIds,
            @ApiParam(value = "page", required = true) @RequestParam(name = "page", required = true) int pag,
            @ApiParam(value = "size", required = true) @RequestParam(name = "size", required = true) int size) {
        try {
            int page = pag * size;
            List<ParamConfigList> equiParamVo = new ArrayList<>();
            for (Object o : paramConfigVerServer.findEquiAndParam(param_type, nums, stationIds, page, size)) {
                Object[] os = (Object[]) o;
                equiParamVo.add(
                        new ParamConfigList((String) os[0], (String) (String) os[1], (String) os[2], (String) os[3],
                                (String) os[4], (String) os[5], (String) os[6], (String) os[7], (String) os[8]));
            }
            return new JsonResponse<>(equiParamVo, equiParamVo.size());
        } catch (Exception e) {
            e.printStackTrace();
            return new JsonResponse<>(500, e.getMessage());
        }
    }

 

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值