栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Spring Boot 结合 spring data jpa中的 DTO 映射查询

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot 结合 spring data jpa中的 DTO 映射查询

我们知道,在 MyBatis 中直接 DTO 映射查询的时候,写起来非常简单。只要字段对应上即可:

下面是对应的 Java 代码实例:

package com.alibaba.microtek.mapper.microtek;import com.alibaba.microtek.dto.SlowSqlTemplateDto;import com.alibaba.microtek.model.microtek.XxptSlowQueyInfo;import com.taobao.pandora.pandolet.annotation.Service;import org.apache.ibatis.annotations.ResultType;import org.apache.ibatis.annotations.Select;import java.util.List;public interface XxptSlowQueyInfoMapper {   
    @Select("SELECT app_name appName,sum(slow_template_count) c  FROM `xxpt_slow_quey_info` GROUP BY app_name ORDER BY c desc limit 10")    @ResultType(SlowSqlTemplateDto.class)    List listSlowSqlTemplateDto();

}package com.alibaba.microtek.dto;public class SlowSqlTemplateDto {
    String appName;
    Integer c;    public String getAppName() {        return appName;
    }    public void setAppName(String appName) {        this.appName = appName;
    }    public Integer getC() {        return c;
    }    public void setC(Integer c) {        this.c = c;
    }
}

在 JPA 中,稍微有点费事,但也还好。下面是一个完整的 Kotlin 代码实例

package com.slow.sql.speedoimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.web.bind.annotation.GetMappingimport org.springframework.web.bind.annotation.RestController@RestControllerclass XxptSlowQueyInfoController {    @Autowired
    lateinit var syncSlowSqlDataJob: SyncSlowSqlDataJob    @Autowired
    lateinit var xxptSlowQueyInfoDao: XxptSlowQueyInfoDao    @GetMapping("/syncSlowSqlDataJob")
    fun syncSlowSqlDataJob() {
        syncSlowSqlDataJob.sync()
    }    @GetMapping("/listSlowSqlTemplateDto")
    fun listSlowSqlTemplateDto(): List {        return xxptSlowQueyInfoDao.listSlowSqlTemplateDto()
    }

}package com.slow.sql.speedoimport org.springframework.data.jpa.repository.JpaRepositoryimport org.springframework.data.jpa.repository.Queryinterface XxptSlowQueyInfoDao : JpaRepository {    fun save(record: XxptSlowQueyInfo): XxptSlowQueyInfo    @Query("""
        SELECt 
        new com.slow.sql.speedo.SlowSqlTemplateDto( x.appName , sum(x.slowTemplateCount) ) 
        FROM XxptSlowQueyInfo x 
        GROUP BY x.appName 
        ORDER BY sum(x.slowTemplateCount) desc
    """)
    fun listSlowSqlTemplateDto(): List
}package com.slow.sql.speedoimport com.alibaba.fastjson.annotation.JSONFieldimport java.util.*import javax.persistence.*@Entity@Table(name = "xxpt_slow_quey_info")class XxptSlowQueyInfo {    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    var id: Long? = null

    @JSonField(name = "app_name")
    var appName: String? = null

    var owner: String? = null

    var ops: String? = null

    @JSonField(name = "need_optimize_slow_template_count")
    var needOptimizeSlowTemplateCount: Int? = null

    @JSonField(name = "need_optimize_slow_sql_count")
    var needOptimizeSlowSqlCount: Int? = null

    @JSonField(name = "slow_template_count")
    var slowTemplateCount: Int? = null

    @JSonField(name = "slow_sql_count")
    var slowSqlCount: Int? = null

    var date: Date? = null}

《Spring Boot 开发实战》



作者:一个会写诗的程序员
链接:https://www.jianshu.com/p/920e8f1a2dbb


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号