当前位置: 首页 > 知识库问答 >
问题:

以Spring Boot方式替换SQL中的视图

葛雨华
2023-03-14

上下文

我继承了一个基于Spring的小项目——它跟踪服务器、软件安装等,供团队内部使用。它使用角度前端和Spring/java/mysql后端作为restful后端。

在过去的几个月里,我把它换成了Spring boot。我不熟悉Spring和Spring boot。所以我一边学习。

我开始用JPA("spring-data-rest")替换"手工编码"sql。JPA对于某些表来说很容易,但对于其他表来说却不容易。对于这些"其他":手工编码的SQL在检索数据时使用"视图"。

进场

具体来说,它使用这种方法:

>

  • 当它创建或更新一个表(例如网站表,如网站)时,它会传入ID:Server_id、product_id、customer_id等。

    该软件从连接服务器、产品和客户表的“站点视图”中检索,以便java可以检索服务器名称、产品名称、客户名称等,而无需单独的数据库调用。

    问题

    >

    在Spring/JPA中处理“星形连接”的最干净的方法通常是什么?(其中一个中央表与其他几个表连接,为用户提供他/她需要的数据)

    谢谢

  • 共有1个答案

    章越
    2023-03-14

    我假设您可以使用常规投影和本机查询从视图中获取数据。类似这样:

    public interface ViewResult {
        String getField1();
        Integer getField2();
        Double getField3();
        //...
    }
    
    public interface SomeRepository extends JpaRepository<SomeEntity, Long> {
        @Query(value = "select v.field1 as field1, v.field2 as field2, v.field3 as field3 from some_view v", nativeQuery = true)
        List<ViewResult> getViewResult();
    }
    

    要处理复杂的查询,您还可以使用投影:

    @Query("select a as abc, b as bcd, c as cde from Abc a join a.bcd b join a.cde c")
    List<AbcBcdCde> getComplexData();
    

    其中AbcBcdCde是投影:

    public interface AbcBcdCde {
        Abc getAbc();
        Bcd getBcd();
        Cde getCde();
    }
    
     类似资料:
    • 问题内容: 我正在尝试通过按“感觉幸运”按钮切换到第二个视图。当我尝试模拟器并按下它时,它只会显示黑屏。我该如何解决? 问题答案: 您可以通过控制从第一个场景顶部的视图控制器图标拖动到第二个场景来在情节提要中的两个场景之间添加序列: 然后,您可以选择该segue并为其指定一个唯一的情节提要标识符,然后可以使用该标识符执行segue: 或者,您可以执行以下操作: 其中“第二个”是我在Interfac

    • 假设我有一个pom。包含如下父依赖项的xml: 有没有一种方法可以通过编程(可能是通过脚本)替换版本? 我的用例: 我有很多pom。需要更改父版本的xml文件 例如,我可以执行以下操作,但这将更新pom.xml中所有出现的,并且我希望将其限制为仅具有版本: 根据git xargs文档,我可以使用任何类型的脚本来处理pom。xml、bash、python、ruby等:https://github.c

    • 问题内容: 我的文字可能具有不同的换行样式。我想将所有换行符’\ r \ n’,’\ n’,’\ r’替换为同一换行符(在本例中为\ r \ n)。 最快的方法是什么?我当前的解决方案如下所示: 问题是您无法一次替换,因为\ r \ n将被复制到\ r \ n \ r \ n。 感谢您的帮助! 问题答案: 如果您不想替换所有Unicode换行符,而是仅替换CRLF样式的换行符,请使用: 匹配这些换

    • 问题内容: 我有一个带有Name字段的Web表单,我希望它能够接受单撇号,例如名称O’Leary,但是当尝试将此记录推送到SQL 2005服务器时,出现错误。我的问题不是这个。这就是当我尝试使用此语句将记录插入到数据库中时… 我在数据库中得到了O’‘Leary,而不是O’Leary。认为SQL应该将这些双单撇号视为一个撇号??? 问题答案: 使用参数化查询会更好。这些将自动处理单引号,并更好地保护

    • 问题内容: 我在多线程环境中有一个有状态的Bean,它将其状态保存在映射中。现在,我需要一种在一次原子操作中替换该映射的所有值的方法。 目前,我用作的实现,但这不是必需的。 我认为解决此问题的唯一方法是制作全局 地图并完全替换地图或使用。有没有更好的办法? 我的更新非常频繁,每秒一次或两次,但是机会很少。同样,整个地图只会包含少于20个值。 问题答案: 使用CAS的方法是在每次批量更新时复制地图内

    • 本文向大家介绍SQL Server中利用正则表达式替换字符串的方法,包括了SQL Server中利用正则表达式替换字符串的方法的使用技巧和注意事项,需要的朋友参考一下 建立正则替换函数,利用了OLE对象,以下是函数代码: 只有对写程序充满热情,才能写出好的程序! 以上所述是小编给大家介绍的SQL Server中利用正则表达式替换字符串的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言小编会