2015-02-04 6 views
2

내 데이터 액세스 개체의 다음 코드 줄에서 SQL 개체 API를 사용하여 제공된 ID와 일치하는 SQL 테이블의 행에서 이름 필드를 가져옵니다. 잘 좋은 작동하지만이 표에 해당 행뿐만 아니라 이름을 모든 필드를 반환하려면 지구상에서 내가 무엇을해야합니까,하지만 기록에 대한 모든 columsSQL Objects API - 모든 열을 가져 옵니까?

@SqlQuery("select name from users where id = :id") 
String findNameById(@Bind("id") int id); 

?

내가 사용하려고 않았다

"select * from users where id = :id" 

을하지만 단지는 테이블의 첫 번째 열, 그리고 내 방법은 문자열을 반환 가능성으로 (id 필드를 반환 듯하지 못했습니다입니까?)

어쨌든, 나는 이것에 대한 아이디어가 없기 때문에 내가 얻을 수있는 모든 도움에 감사 할 것입니다.


추가 정보 나는 정보에 대한 요청을받을 같이

이 내 DAO를 호출하는 컨트롤러의 나의 방법의 방법 서명입니다. DAO를에서 findNameByID 방법처럼 당신이 볼 수 있듯이

public String retrieveUserRecord(@PathParam("id") int id) 

, 그것은

는 내가하고 싶은, 내 방법 서명을 사용하여 ID를 전달하고 돌아 오기는 ..., 문자열을 반환 가능한 한 좋은 JSON 객체로 내 모든 열을?

+0

메소드 서명을 추가 할 수 있습니까? – Manikandan

+0

서명이 추가되었습니다. – Slippy

답변

3

모든 필드를 가져 오려면 반환 유형을 문자열로해서는 안됩니다. 나는 당신이 'USER'모델을 가지고 있다고 가정하고있다.

public class User { 
    private Integer id; 
    private String name; 

    public User(id, name) { 
     this.id = id; 
     this.name = name; 
    } 
    } 

DB 결과를 Java 모델에 매핑하는 데는 몇 가지 방법이 있습니다. 클래스 사용자에 대한 매퍼를 만들어야합니다.

public class UserMapper<User> implements ResultSetMapper<User> { 
     public User map(int row, ResultSet rs, StatementContext ctx) throws SQLException { 
     return new User(rs.getInt("id"), rs.getString("name")); 
     } 
} 

이 mapper는 sqlObject api에서 언급해야합니다.

@SqlQuery("select * from users where id = :id") 
@Mapper(UserMapper.class) 
String retrieveUserRecord(@Bind("id") int id); 

당신이 세터에게 모델의 & 게터이있는 경우도 MapResultAsBean를 사용할 수 있습니다.

this library을 사용할 수도 있습니다.

+0

안녕하세요! 최신 upvote 및 답변을 설정하는 것이 죄송합니다. 나는 실제로 일하기에 바빴다. 당신의 대답은 꽤 많이 찍혔다. 같은 문제가있는 독자를 위해 "getInteger()"대신 "getInt()"를 사용했습니다. 감사합니다. :) – Slippy