iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >MyBatis动态SQL如何实现前端指定返回字段
  • 304
分享到

MyBatis动态SQL如何实现前端指定返回字段

2024-04-02 19:04:59 304人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录动态sql实现前端指定返回字段问题描述解决方案mybatis如何返回部分字段.xml文件中resultMap的type改为第二种很笨的方法动态SQL实现前端指定返回字段 问题描述

动态SQL实现前端指定返回字段

问题描述

在使用ClickHouse时,遇到需要根据业务需求,动态返回指定字段,从而充分利用ClickHouse列式存储的优势。

解决方案

可用MyBatis的动态SQL进行数据返回;故可在业务层将指定返回的列传入数据层,利用foreach标签进行遍历返回数据。

代码实现

1.请求参数

@Data
public class QueryDTO {
    
    private Set<String> targetFields;
}

2.mapper接口

    
    List<ResourceTotal> query(QueryDTO record);

3.mapper.xml实现

  <sql id="Base_Result_Column">
    resourceId, platfORMCount, createUserId
  </sql>
  <select id="query" parameterType="cn.example.module.data.test.QueryDTO" resultMap="BaseResultMap">
    select
    <foreach collection="targetFields" item="item" separator=",">
      ${item}
    </foreach>
    ,
    <include refid="Base_Result_Column"/>
    from resource_total
    where 1 = 1
  </select>

4.注意事项

a.使用动态返回字段时,不可使用预先编译,故foreach中使用‘$’符号,而不使用‘#’;

b.foreach标签后若还有其他固定字段返回,记得用逗号‘,’分隔。 

MyBatis如何返回部分字段

mybatis 返回部分字段,这里介绍两种方式(主推第一种) 

.xml文件中resultMap的type改为

java.util.HashMap 即可

其余代码都不用写, 亲测可用,xml文件中代码如下:

    <!-- 返回类型  -->
    <resultMap id="testRestMap" type="java.util.HashMap">
         <result column="province_name" jdbcType="VARCHAR" property="provinceName" />
         <result column="area_name" jdbcType="VARCHAR" property="areaName" />
         <result column="lane_num" jdbcType="VARCHAR" property="laneNum" />
         <result column="road_name" jdbcType="VARCHAR" property="roadName" />
    </resultMap>
    
    <!--sql查询  -->
    <select id="selTest"  resultMap="testRestMap">
        select 
            province_name,
            area_name,lane_num,
            road_name 
        from  site_info
        where 1=1
        and del_flag='0'
    </select>

第二种很笨的方法

重新新建一个对象实体,该实体文件的字段与要返回的 “部分字段” 一一对应即可,代码如下:

resultMap 的type=com.sinosoft.pojo.DeviceNumber   指向一个文件,该文件为新建实体类,里面是要返回的 “部分字段”

    <!-- 全省设备数量统计 数据返回 -->
    <resultMap id="DeviceNumber" type="com.sinosoft.pojo.DeviceNumber">
         <result column="distCode" jdbcType="VARCHAR" property="distCode" />
         <result column="distName" jdbcType="VARCHAR" property="distName" />
         <result column="number" jdbcType="VARCHAR" property="number" />
    </resultMap>
    
    <!-- 全省设备数量统计 -->
    <select id="statisticsDevice"  resultMap="DeviceNumber">
        SELECT
            t1.distCode,
            t1.distName,
            t2.number
        FROM
            (
            select 
                fd_objectid distCode,
                area_name  distName
            FROM t_sys_area 
            WHERE LEVEL='2'
        ) t1 LEFT JOIN (
            SELECT 
                city_no,
                count(*) as number 
            FROM site_info 
            WHERE 1=1
            and del_flag='0'
            and is_bridge!='1'
            GROUP BY city_no
        )t2 on t2.city_no=t1.distCode
    </select>

DeviceNumber 文件内容如下:

package com.sinosoft.pojo;

public class DeviceNumber {    
    private String distCode;//行政区划
    private String distName;//行政区划名称
    private String number;//设备数量 
    public String getDistCode() {
        return distCode;
    }
    public void setDistCode(String distCode) {
        this.distCode = distCode;
    }
    public String getDistName() {
        return distName;
    }
    public void setDistName(String distName) {
        this.distName = distName;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: MyBatis动态SQL如何实现前端指定返回字段

本文链接: https://www.lsjlt.com/news/163772.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MyBatis动态SQL如何实现前端指定返回字段
    目录动态SQL实现前端指定返回字段问题描述解决方案MyBatis如何返回部分字段.xml文件中resultMap的type改为第二种很笨的方法动态SQL实现前端指定返回字段 问题描述...
    99+
    2024-04-02
  • mongodb如何返回指定字段
    在MongoDB中,可以使用projection操作符来返回指定字段。在find方法中传入第二个参数作为projection操作符,...
    99+
    2024-04-03
    mongodb
  • mybatis-plus新增/修改如何实现自动填充指定字段
    目录mybatis-plus 新增/修改 自动填充指定字段1.需要修改的字段在模型类上添加2.新建一个MetaObjectHandler的实现类通用字段自动填充的最佳实践总结一、调整...
    99+
    2024-04-02
  • 如何用SQL语句在指定字段前面插入新的字段
    如何用SQL语句在指定字段前面插入新的字段,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。create proc addcolumn@table...
    99+
    2024-04-02
  • mssql如何实现指定字段编号sql语句
    小编给大家分享一下mssql如何实现指定字段编号sql语句,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!代码如下: select nid,ntitle,nre...
    99+
    2024-04-02
  • Mybatis在注解上如何实现动态SQL
    目录在注解上实现动态SQL注解的动态语句支持以下注解方式动态sql写法和注意事项判断字符串为空串 用单引号大于等于用小于等于用在注解上实现动态SQL 使用Mybatis注解实现sql...
    99+
    2024-04-02
  • MyBatis-Plus如何实现字段自动填充功能
    这篇文章给大家分享的是有关MyBatis-Plus如何实现字段自动填充功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言在项目中,我们有一些公共的字段需要做修改如:gmt_create:创建时间creat...
    99+
    2023-06-25
  • Mybatis如何使用ognl表达式实现动态sql
    本文讲述在mybatis中如何使用ognl表达式实现动态组装sql语句 新建Users实体类: public class Users { private Integer ...
    99+
    2024-04-02
  • SpringBoot如何实现统一封装返回前端结果集
    这篇文章主要介绍了SpringBoot如何实现统一封装返回前端结果集的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot如何实现统一封装返回前端结果集文章都会有所收获,下面我们一起来看看吧。我们如...
    99+
    2023-07-02
  • javascript如何实现指定日期返回上月日期
    这篇文章给大家分享的是有关javascript如何实现指定日期返回上月日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:在项目开发中,使用javascript对日期进行...
    99+
    2024-04-02
  • js中document.referrer如何实现移动端返回上一页
    这篇文章主要介绍js中document.referrer如何实现移动端返回上一页,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!返回上一页,在PC端我们可以使用:history.go(...
    99+
    2024-04-02
  • js如何实现点击返回跳转到指定页面
    这篇文章主要介绍了js如何实现点击返回跳转到指定页面的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js如何实现点击返回跳转到指定页面文章都会有所收获,下面我们一起来看看吧。功能描述:在浏览器中新建标签页并指定一...
    99+
    2023-07-04
  • Mybatis如何实现@Select等注解动态组合SQL语句
    目录一、背景说明二、实现方案三、 实现自定义注解1、自定义Select注解2、自定义Select in注解3、自定义Update的注解4、自定义Insert的注解 同理四、...
    99+
    2024-04-02
  • java如何实现抽取json文件指定字段值
    目录使用场景抽取json指定字段值json文件格式导入依赖代码实现完整代码把需要的数据整理到excel中使用场景 我有一个5000条数据的json文件,每条数据包含地名、该地的经纬度...
    99+
    2024-04-02
  • mybatis如何实现新增save结束后自动返回主键id
    小编给大家分享一下mybatis如何实现新增save结束后自动返回主键id,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mybatis新增save结束后自动返回主...
    99+
    2023-06-21
  • Vue移动端如何实现右滑屏幕返回上一页
    这篇文章将为大家详细讲解有关Vue移动端如何实现右滑屏幕返回上一页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装依赖使用npm安装vue-directive-touc...
    99+
    2024-04-02
  • 利用Java如何获取Mybatis动态生成的sql接口实现
    目录前言1、编写xml: SqlGenarate.mapper.xml2、定义接口3、实现接口总结前言 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 S...
    99+
    2024-04-02
  • 后端接口返回文件流格式、前端如何实现文件下载导出呢?
    在项目开发过程中,难免会需要实现文件下载功能,记录下自己实际开发过程过程中遇到两种实现的方式。一种:后端直接返回加密url ,前端解密后直接使用 a标签下载就可以,这种方法相等比较简单,另一种:后端接...
    99+
    2023-09-02
    前端 java javascript
  • 详解如何实现OpenAPI开发动态处理接口的返回数据
    目录0 | 需求说明1 | 思路方案2 | 具体实施0 | 需求说明 业务场景:服务A对接了服务B,服务C等服务的一些接口,然后由服务A统一暴露接口给到外部用户使用。 需求是: 服...
    99+
    2023-05-15
    OpenAPI动态处理接口返回数据 OpenAPI 接口返回处理
  • SQL语句中如何实现公共字段的自动填充方法
    这篇文章主要介绍了SQL语句中如何实现公共字段的自动填充方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 前言我们在设计数据库的时候一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作