SSM框架中mybatis采用动态传入表名的方法

最近公司项目用到了SSM框架中mybatis部分需要动态传入表名进行查询,本人也刚接触不久,如有错误,还望指出。

表名字段前半部分是一样的,后面跟上年月来区分,例如  t_yhdr_xn_jcsk_data201801

前端部分采用jQuery datatables插件,通过ajax传入当前的年月,参数用datetime表示:

$.ajax({
    type : "post",
    async : false,
    url : "jczd/getRealTimePollute.do",
    data : "datetime=201801",
    dataType : "json",
    success : function (result) {
        var returnData = {};
        returnData.data = result.params.jcskDataEntityList;
        callback(returnData);
    },
    error : function (errorMsg) {
        idata = null;
    }
});
Controller:

@RequestMapping(value = "/getRealTimePollute", method = RequestMethod.POST)
@ResponseBody
public JsonResult getRealTimePollute(String datetime) {
    JsonResult jsonResult = JsonResult.getInstance();
    List<JcskDataEntity> jcskDataEntityList = null;
    logger.debug("getRealTimePollute------------------------------");

    try {
        jcskDataEntityList = jczdService.getRealTimePollute(datetime);
        jsonResult.setSuccess(true);
        jsonResult.addParam("jcskDataEntityList", jcskDataEntityList);
    } catch (Exception e) {
        jsonResult.setSuccess(false);
    }
    return jsonResult;
}
Service:

将表名拼接好之后通过 Map的方式传入

/**
 * 根据当前时间查询实时污染分布
 * @param datetime
 * @return
 * @throws Exception
 */
public List<JcskDataEntity> getRealTimePollute(String datetime) throws Exception {
    logger.debug("getRealTimePollute:" + datetime);
    Map<String, String> map = new HashMap<>();
    map.put("tableName", "t_yhdr_xn_bu_jcsk_data".concat(datetime));

    return (List<JcskDataEntity>) dao.findForList("com.yhdr.xn.JczdEntityMapper.selectRealTimePollute", map);

}
Mybatis:

需要加上  statementType="STATEMENT"

<select id="selectRealTimePollute" parameterType="java.util.Map" statementType="STATEMENT" resultMap="realTimePolluteResultMap">
    SELECT t2.ZD_NAME, t1.DATETIME, t1.AQI, t1.SO2, t1.NO2, t1.CO, t1.O3, t1.PM25, t1.PM10
    FROM ${tableName} t1
    JOIN t_yhdr_xn_bu_jczd t2
    ON t1.ZD_ID = t2.ZD_ID
    ORDER BY DATETIME DESC
</select>
动态表名传入通过 ${  表名  }来实现:
${tableName}

最终实现查询结果:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值