小编典典

使用Spring JDBC时长久(+20行sql)外在化的干净方法吗?

javascript spring

我想将我的应用程序中的一些大型查询外部化为properties \ sql \ xml文件。但是,我想知道是否有人对如何以一种干净的方式实现此目标有一些建议。大多数结果建议使用ORM框架,但由于某些数据限制,此方法不适用。

我看了一下:Java-将SQL语句存储在一个外部文件中,但是对一些查询使用此属性名.1,.2等,每条查询的长度都超过20行,这似乎不太干净。


阅读 330

收藏
2020-09-22

共1个答案

小编典典

您可以将查询放入xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>
<entry key="getPersonById">
    <![CDATA[
        Select Name From Person 
        Where Id =?     
    ]]>

</entry>    
<entry key="getPersonBySSN">
    <![CDATA[

    ]]>
</entry>

</properties>

在Spring应用程序上下文中,加载此xml文件

<bean id="queryProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations" value="classpath:/queries.xml" />
</bean>

在您的DAO类中注入这个bean

<bean id="myDAO" class="com.xyz.dao.MyDAOImpl">
  <property name="queryProps" ref="queryProps" />
</bean>

在您的DAO类中定义queryProps,不要忘记为此使用setter方法

 private Properties queryProps;

现在,您可以像这样在DAO中访问查询-

 String query = queryProps.getProperty("getPersonById");

希望这可以帮助。

2020-09-22