簡體   English   中英

開源Java庫的SQL實用程序功能?

[英]open source Java library of SQL utility functions?

我正在尋找一個SQL實用程序庫,該庫允許我執行以下操作:使用LIKE轉義字符串以進行前綴搜索,或者通過添加術語(帶有占位符支持)以編程方式編寫查詢的WHERE部分。

QuaereLIQUidFORMjaQuJEQUEL (Java嵌入式查詢語言)之類的項目都提供了流暢的接口來編寫SQL語句,並且可能正是您所需要的。 例如,使用JEQUEL:

public void testParameterExample() {
    final Sql sql = select(ARTICLE.NAME, ARTICLE.ARTICLE_NO)
            .from(ARTICLE)
            .where(ARTICLE.OID.in(named("article_oid"))).toSql();
    assertEquals("select ARTICLE.NAME, ARTICLE.ARTICLE_NO from ARTICLE where ARTICLE.OID in (:article_oid)", sql.toString());

    final Collection<String> articleDesc = sql.executeOn(dataSource)
            .withParams("article_oid", Arrays.asList(10, 11, 12))
            .mapBeans(new BeanRowMapper<ArticleBean, String>() {
                public String mapBean(final ArticleBean bean) {
                    return bean.getArticleNo() + "/" + bean.getName();
                }
            });
    assertEquals(1, articleDesc.size());
    assertEquals("12345/Foobar", articleDesc.iterator().next());
}

jaQu頁面底部的更多內容。

像hibernate或JPA這樣的典型ORM框架提供了開箱即用的功能。

例如在休眠狀態。

from Document doc fetch all properties where lower(doc.name) like 'cats%'

將返回nqme以cats開頭的Document對象。

對於參數查詢:

Query q = s.createQuery("from foo Foo as foo where foo.name=:name and foo.size=:size");
q.setProperties(fooBean); // fooBean has getName() and getSize()
List foos = q.list();

它還可以幫助您避免創建所有所需的JDBC對象和所有錯誤處理。

如果您需要靠近SQL,請仔細閱讀iBatis。

如果您仍在以這些底層術語考慮SQL,那么您可能還沒有足夠的面向對象的知識。

考慮對象方面的問題。 您仍然沉迷於原始級別。

在模型對象之上考慮更好的持久性抽象:DAO模式,Spring JDBC,iBatis,ORM工具(例如Hibernate等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM