복붙노트

[SQL] 자바에서 좋은 동적 SQL 빌더 라이브러리가 있습니까? [닫은]

SQL

자바에서 좋은 동적 SQL 빌더 라이브러리가 있습니까? [닫은]

누구나 SQUIGGLE 같은 자바에 대한 좋은의 SQL 빌더 라이브러리 (것 같습니다 더 이상 유지되지 않음)를 알고있다. 바람직하게는, 활성 개발 프로젝트.

바람직하게는 Zend_Db_Select 같은 구문, 같은 쿼리를 만들 수 있습니다 뭔가

String query = db.select().from('products').order('product_id');

해결법

  1. ==============================

    1.Querydsl 및 jOOQ 두 개의 인기있는 선택입니다.

    Querydsl 및 jOOQ 두 개의 인기있는 선택입니다.

  2. ==============================

    2.나는 jOOQ을 추천 할 수 있습니다. 그것은 훌륭한 기능도 SQL에 대한 직관적 인 DSL과이며 매우 customable 리버스 엔지니어링 접근 방식을 많이 제공합니다.

    나는 jOOQ을 추천 할 수 있습니다. 그것은 훌륭한 기능도 SQL에 대한 직관적 인 DSL과이며 매우 customable 리버스 엔지니어링 접근 방식을 많이 제공합니다.

  3. ==============================

    3.ddlutils 내 최선의 선택 : HTTP : //db.apache.org/ddlutils/api/org/apache/ddlutils/platform/SqlBuilder.html

    ddlutils 내 최선의 선택 : HTTP : //db.apache.org/ddlutils/api/org/apache/ddlutils/platform/SqlBuilder.html

    여기에 예 (끝내)를 만들 수 있습니다 :

    Platform platform  = PlatformFactory.createNewPlatformInstance("oracle");//db2,...
    //create schema    
    def db =        new Database();
    def t = new Table(name:"t1",description:"XXX");
    def col1 = new Column(primaryKey:true,name:"id",type:"bigint",required:true);
    t.addColumn(col1);
    t.addColumn(new Column(name:"c2",type:"DECIMAL",size:"8,2"));
    t.addColumn( new Column(name:"c3",type:"varchar"));
    t.addColumn(new Column(name:"c4",type:"TIMESTAMP",description:"date"));        
    db.addTable(t);
    println platform.getCreateModelSql(db, false, false)
    
    //you can read Table Object from  platform.readModelFromDatabase(....)
    def sqlbuilder = platform.getSqlBuilder();
    println "insert:"+sqlbuilder.getInsertSql(t,["id":1,c2:3],false);
    println "update:"+sqlbuilder.getUpdateSql(t,["id":1,c2:3],false);
    println "delete:"+sqlbuilder.getDeleteSql(t,["id":1,c2:3],false);
    //http://db.apache.org/ddlutils/database-support.html
    
  4. ==============================

    4.최대 절전 모드 기준 API (안 일반 SQL하지만,하지만 매우 강력하고 적극적인 개발 중) :

    최대 절전 모드 기준 API (안 일반 SQL하지만,하지만 매우 강력하고 적극적인 개발 중) :

    List sales = session.createCriteria(Sale.class)
             .add(Expression.ge("date",startDate);
             .add(Expression.le("date",endDate);
             .addOrder( Order.asc("date") )
             .setFirstResult(0)
             .setMaxResults(10)
             .list();
    
  5. ==============================

    5.다음과 같은 라이브러리를 사용할 수 있습니다 :

    다음과 같은 라이브러리를 사용할 수 있습니다 :

    https://github.com/pnowy/NativeCriteria

    이 라이브러리는 그것 (지원되는 최대 절전 모드 세션 및 JPA 제공자) 최대 절전 모드에서 지원하는 모든 데이터베이스를 지원하므로 "SQL 쿼리를 만들"최대 절전 모드의 상단에 내장되어 있습니다. 빌더 후두둑 가능 등 (객체 매퍼, 결과 매퍼)에 있습니다.

    당신은 GitHub의 페이지에서 예를 찾을 수 있습니다, 라이브러리는 메이븐에서 물론 중앙 사용할 수 있습니다.

    NativeCriteria c = new NativeCriteria(new HibernateQueryProvider(hibernateSession), "table_name", "alias");
    c.addJoin(NativeExps.innerJoin("table_name_to_join", "alias2", "alias.left_column", "alias2.right_column"));
    c.setProjection(NativeExps.projection().addProjection(Lists.newArrayList("alias.table_column","alias2.table_column")));
    
  6. from https://stackoverflow.com/questions/5620985/is-there-any-good-dynamic-sql-builder-library-in-java by cc-by-sa and MIT license