关于Spring Native Query

使用Java对关系数据库运行本机查询常常会使源代码变得混乱和繁杂,因为过滤条件太多,而且表绑定也发生了变化。

因此,我决定创建“Spring Native Query”库,以方便执行本机查询,重点是简化源代码,使其更具可读性和干净性,创建包含本机查询的文件,并动态注入 assets 以执行这些查询。

该库的思想是运行约定查询,类似于Spring数据,并且只用于springboot和Spring Data Jpa。

在创建扩展NativeQuery接口的新接口时,我们从这些接口创建假对象,使用代理拦截方法调用并执行查询,最后动态注册这些接口的bean,以便将这些接口注入到Spring的所有组件中。

约定的工作方式如下:方法名是包含sql查询的文件名,方法的参数将作为参数传递给实体管理器,方法返回是将使用查询返回的结果转换的对象。

包含SQL查询的文件是Jtwig模板,我们可以在其中应用验证修改整个查询、添加过滤器、更改表之间的链接,最后是SQL中的任何更改。

默认情况下,必须将本机查询文件添加到资源文件夹中名为“nativeQuery”的文件夹中。请记住,文件名必须与方法名相同。

在上面的1.0.28版本中,我们开始使用Hibernate类型来正确转换数据类型,对于以前的版本,请考虑通过下面的配置禁用Hibernate类型的使用。

native-query.use-hibernate-types=false

代码示例

下面是一些更好理解的例子。让我们创建一个springboot项目,其中包含依赖项、springdatajpa和H2数据库。在启动项目时,让我们通过创建一个新表并插入一些记录来创建一个sql脚本。所有示例源代码都在github中。

在您的项目中添加库的依赖项,让我们以maven为例。

<dependency>
    <groupId>io.github.gasparbarancelli</groupId>
    <artifactId>spring-native-query</artifactId>
    <version>1.0.28</version>
</dependency>

在资源文件夹中创建一个名为 data.sql 的文件并插入脚本。

CREATE TABLE USER (
  cod INT NOT NULL,
  full_name VARCHAR(45) NULL,
  active INT NULL,
  PRIMARY KEY (cod)
);

INSERT INTO USER (cod, full_name, active)
VALUES (1, 'Gaspar', 1),
       (2, 'Elton', 1),
       (3, 'Lucini', 1),
       (4, 'Diogo', 1),
       (5, 'Daniel', 1),
       (6, 'Marcos', 1),
       (7, 'Fernanda', 1),
       (8, 'Maicon', 1),
       (9, 'Rafael', 0);

首先在配置文件中定义项目的包扫描,支持文件 application.properties 、 bootstrap.properties 、 application.yaml 、 application.yml 、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值