Java-将SQL语句存储在外部文件中
我正在寻找在外部文件中存储SQL语句的Java库/框架/技术。支持团队(包括DBA)应该能够(稍微)更改语句,以使它们保持同步,以防数据库模式更改或出于调整目的。
要求如下:
- 该文件必须可从Java应用程序读取,而且必须由支持团队进行编辑,而无需高级编辑器
- 理想情况下,文件应为纯文本格式,但XML也可以
- 允许存储/检索DML以及DDL语句
- 可以在以后的阶段添加新语句(应用程序足够灵活,可以选择并执行它们)
- 语句可以分组(并由应用程序分组执行)
- 语句应允许参数
笔记:
- 一旦检索到,这些语句将使用Spring的JDBCTemplate执行
- 不会使用Hibernate或Spring的IOC容器
到目前为止,我设法找到了以下Java库,这些库使用外部文件存储SQL语句。但是,我主要对存储感兴趣,而不是对隐藏所有JDBC“复杂性”的库感兴趣。
- Axamol SQL库
样本文件内容:
<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>
- iBATIS
样本文件内容:
<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>
WEB4J
-- 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}
}
谁能推荐经过尝试和测试的解决方案?
回答:
只需使用一个键值对创建一个简单的Java属性文件,如下所示:
users.select.all = select * from user
在您的DAO类中声明一个Properties类型的私有字段,并使用Spring配置将其注入,该配置将从文件中读取值。
:如果要在多行中支持SQL语句,请使用以下表示法:
users.select.all.0 = select *users.select.all.1 = from user
以上是 Java-将SQL语句存储在外部文件中 的全部内容, 来源链接: utcz.com/qa/415130.html