[英]open source Java library of SQL utility functions?
我正在尋找一個SQL實用程序庫,該庫允許我執行以下操作:使用LIKE轉義字符串以進行前綴搜索,或者通過添加術語(帶有占位符支持)以編程方式編寫查詢的WHERE部分。
Quaere , LIQUidFORM , jaQu , JEQUEL (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.