2015-05-10 45 views
0

我在使用Apache Commons DBUtils時根據QueryRunner#insert的方法在其文檔中插入返回ResultSetHandler的泛型類型。我的項目中有一個BR_Author對象。QueryRunner插入方法返回類型

BR_Author.java

import org.springframework.stereotype.Repository; 

@Repository 
public class BR_Author { 
    private int id; 
    private String authorName; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getAuthorName() { 
     return authorName; 
    } 

    public void setAuthorName(String authorName) { 
     this.authorName = authorName; 
    } 
} 

我寫一個簡單的插入語句在我的服務類像

AuthorService#createAuthor

public BR_Author createAuthor(String authorName) throws ApiException { 
     String sql = "Insert into BR_AUTHOR(authorName) VALUES(?)"; 
     ResultSetHandler<BR_Author> rs = new BeanHandler<BR_Author>(
       BR_Author.class); 
     QueryRunner qr = new QueryRunner(dataSource); 
     Object[] params = { authorName }; 
     try { 
      BR_Author author = qr.insert(sql, rs, params); 
      System.out.println("Br_Author:" + author); 
      return author; 

     } catch (SQLException e) { 
      throw new ApiException(ErrorCode.ERR20001, e.getMessage()); 
     } 
    } 

我試圖返回在createAuthor方法的附加值,但如果我配置ID字段自動遞增對象回報

Br_Author:Br_Author [id=0, authorName=null] 

當我檢查分貝我看到它成功添加值。

如果我禁用自動增量並從代碼中設置ID,作者對象爲空。所以我想了解一下,我誤解了QueryRunner#insert方法,或者它有一個錯誤。我已經檢查下面的鏈接。

BTW:爲BR_Author類工作正常所以這意味着不應該有任何映射問題選擇查詢。

回答

0

我沒有從DBUtils API找到任何官方解決方案,所以我只是返回生成的ID,然後在服務層插入帶有此ID的記錄後查詢它。這種方法返回在服務層的對象,但我做了一個額外的查詢。