首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL实用函数的开源Java库?

SQL实用函数的开源Java库?
EN

Stack Overflow用户
提问于 2010-08-23 03:21:50
回答 3查看 938关注 0票数 0

我正在寻找一个SQL实用程序库,它允许我做一些事情,比如使用like对前缀搜索字符串进行转义,或者通过添加术语(具有占位符支持)以编程方式编写查询的WHERE部分。

EN

回答 3

Stack Overflow用户

发布于 2010-08-23 04:01:58

QuaereLIQUidFORMjaQuJEQUEL (Java Embedded SQL )这样的项目都提供了一个流畅的接口来编写QUEry语句,这可能就是你想要的。例如,使用JEQUEL:

代码语言:javascript
复制
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网页的底部有更多的信息。

票数 2
EN

Stack Overflow用户

发布于 2010-08-23 03:41:47

典型的ORM框架如hibernate或JPA即可提供此功能。

例如,在hibernate中。

代码语言:javascript
复制
from Document doc fetch all properties where lower(doc.name) like 'cats%'

将返回nqme以cat开头的Document对象。

对于参数查询:

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2010-08-23 03:33:11

如果您还在考虑这些低级术语中的SQL,我会说您还不够面向对象。

从对象的角度思考你的问题。你仍然深陷原始水平的泥潭。

考虑在模型对象之上进行更好的持久化抽象: DAO模式、Spring JDBC、iBatis、Hibernate等ORM工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3542966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档