我想将我的应用程序中的一些大型查询外部化为properties \ sql \ xml文件。但是,我想知道是否有人对如何以一种干净的方式实现此目标有一些建议。大多数结果建议使用ORM框架,但由于某些数据限制,此方法不适用。
我看了一下:Java-将SQL语句存储在一个外部文件中,但是对一些查询使用此属性名.1,.2等,每条查询的长度都超过20行,这似乎不太干净。
您可以将查询放入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");
希望这可以帮助。