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

回到顶部