在开发 Spring Boot Data JPA 类型的应用中,通常将HSQL或本地SQL(Native SQL)直接写在对应的Repository类中。但如果希望将这些SQL预计剥离出来放在分离文件中以便于维护,则可以采用本文介绍的方法。
本文中使用 Spring Boot 构建Rest服务实验手册(一) 中的案例进行演示。
定义存放SQL的文件
该功能通过命名SQL来实现,在 Spring Boot 中,可以支持用 properties 或 xml 文件来存储命名的SQL。
首先需要建立该文件,我们以 xml 文件为例:
在 src/main/resources 目录下新建名为: META-INF 的目录。
在该目录下新建名为: orm.xml 的文件,内容如下:
1 |
|
添加SQL语句
添加一个HSQL
1 | <named-query name="Todo.findWithDesc"> |
为Todo对象定义了一个名为: findWithDesc 的命名HSQL
添加一个本地SQL
1 | <named-native-query name="Todo.findWithNativeSQL" |
为Todo对象定义了一个名为: findWithNativeSQL 的命名Native SQL
在Repository中使用
在Repository定义中,可以简单的按照名字匹配的方法来使用这些命名SQL,如下:
1 |
|