【问题标题】:java open source generate sql query from xmljava开源从xml生成sql查询
【发布时间】:2011-07-29 10:49:14
【问题描述】:

在java中,我们是否有一个从xml文件生成sql的开源代码?例如,最简单的情况是:

<query>
  <select>id</select>
  <from>student</from>
   <equal><column>name</column><val>john</val></equal>
   <equal><column>age</column><val>23</val></equal>
   <equal><column>registerDate</column><val>03/04/1990</val></equal>
</query>

然后会生成一条sql:

select id
from student
where name = 'john'
    and age = 23
    and registerDate = '03/04/1990'

当然,这是最简单的情况,当我们有between,join时,会更复杂。那么我们有开源来处理这个问题吗?我不想像hibernate那样使用ORM,因为它太过分了。

谢谢。

【问题讨论】:

  • Hibernate 序列化对象并将这些对象存储在数据库中。您无法将休眠与您想做的事情进行比较;-)
  • 我不确定是否有。但是为什么你需要把查询放在 xml 格式中。你可以简单地将它放在一个 sql 文件中,然后在你的 DAO 中调用它。
  • 我正在寻找同样的东西。如果您找到了一些库,请告诉我,否则我们将不得不编写自己的库(到目前为止,这很困难,因为我们正在追逐截止日期:()

标签: java sql xml frameworks


【解决方案1】:

您必须使用这种 XML 格式吗?它是否以某种方式在内部定义?

如果您的 XML 目标纯粹是让动态查询更容易创建,您可以尝试MyBatis。它使用 XML 定义文件将 SQL 查询组合在一起,并允许您根据参数动态更改查询,而无需使用字符串连接来组装 SQL 查询。您不会将每个元素都定义为 XML 标记,而只会将其中的一部分定义为可能更改的部分。查看MyBatis User Guide 了解更多信息和代码示例。下面是一个简单的动态查询的快速浏览:

<select id=”findActiveBlogWithTitleLike” parameterType=”Blog” resultType=”Blog”>
    SELECT * FROM BLOG
    WHERE state = ‘ACTIVE’
    <if test=”title != null”>
        AND title like #{title}
    </if>
</select>

这只是为了让您了解它的外观。有很多可能性和标签可以帮助您构建您可能需要的任何查询,因此我建议您花一些时间阅读用户指南以充分了解框架功能。

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多