Java - 将 SQL 语句存储在外部文件中 [已关闭]
我正在寻找一种将SQL语句存储在外部文件中的Java库/框架/技术。支持团队(包括 DBA)应该能够(稍微)更改语句,以便在数据库架构更改或进行调优时保持同步。
以下是要求:
- 该文件必须可以从Java应用程序读取,但也必须可由支持团队编辑,而无需花哨的编辑器
- 理想情况下,文件应为纯文本格式,但 XML 也可以
- 允许存储/检索 DML 以及 DDL 语句
- 可以在稍后阶段添加新语句(应用程序足够灵活,可以选取并执行它们)
- 语句可以分组(并由应用程序作为一个组执行)
- 语句应允许参数
笔记:
- 检索后,语句将使用Spring的JDBCTemplate执行
- 休眠或Spring的IOC容器将不会被使用
到目前为止,我设法找到了以下Java库,这些库使用外部文件来存储SQL语句。但是,我主要感兴趣的是存储,而不是隐藏所有JDBC“复杂性”的库。
-
示例文件内容:
<s:query name="get_emp"> <s:param name="name" type="string"/> <s:sql databases="oracle"> select * from scott.emp join scott.dept on (emp.deptno = dept.deptno) where emp.ename = <s:bind param="name"/> </s:sql> </s:query>
-
示例文件内容:
<sqlMap namespace="Contact""> <typeAlias alias="contact" type="com.sample.contact.Contact"/"> <select id="getContact" parameterClass="int" resultClass="contact""> select CONTACTID as contactId, FIRSTNAME as firstName, LASTNAME as lastName from ADMINISTRATOR.CONTACT where CONTACTID = #id# </select> </sqlMap> <insert id="insertContact" parameterClass="contact"> INSERT INTO ADMINISTRATOR.CONTACT( CONTACTID,FIRSTNAME,LASTNAME) VALUES(#contactId#,#firstName#,#lastName#); </insert> <update id="updateContact" parameterClass="contact"> update ADMINISTRATOR.CONTACT SET FIRSTNAME=#firstName# , LASTNAME=#lastName# where contactid=#contactId# </update> <delete id="deleteContact" parameterClass="int"> DELETE FROM ADMINISTRATOR.CONTACT WHERE CONTACTID=#contactId# </delete>
-
-- This is a comment ADD_MESSAGE { INSERT INTO MyMessage -- another comment (LoginName, Body, CreationDate) -- another comment VALUES (?,?,?) } -- Example of referring to a constant defined above. FETCH_RECENT_MESSAGES { SELECT LoginName, Body, CreationDate FROM MyMessage ORDER BY Id DESC LIMIT ${num_messages_to_view} }
任何人都可以推荐经过尝试和测试的解决方案吗?