Jersey and Object Mapper



当我需要使用对象映射器时,我有点困惑。我认为它应该用于将结果集从DB查询映射到对象,所以我创建了一个对象映射器,如下所示:

public class PersonMapper implements ResultSetMapper<Person>
{
    public Person map(int index, ResultSet resultSet, StatementContext ctx) throws SQLException
    {
        Person person = new Person();
        person.setPersonId(resultSet.getShort("PersonId"));
        person.setPersonType((PersonType) resultSet.getObject("PersonType"));
        person.setPersonName(resultSet.getString("PersonName"));
        person.setPersonMobile(resultSet.getString("PersonMobile"));
        return person;
    }
}

然后我将其注册到特定的DAO,如下所示:@RegisterMapper(PersonMapper.class)

然而,似乎一切也工作没有映射器,即使我做这样的查询:List<Person> list = list(namedQuery("Person.findAll"));返回一个适当的列表。

那么我到底应该在什么时候使用映射器呢?

如果您正在谈论ObjectMapper (com.fasterxml.jackson. databindd .ObjectMapper)类,那么我们使用它将整个POJO对象作为JSON字符串保存到数据库中,其中您需要在表创建时保持列的数据类型为JSON…

所以我们像这样使用

public Response saveStateRules(@Context HttpServletRequest request,StatePojo statePojo)
    {
        ObjectMapper mapper = new ObjectMapper(); 
        String json = mapper.writeValueAsString(statePojo);
        State state = new State();
        state.setRulejson(json);
}

,

public class StatePojo implements Serializable{
    private Integer stateid;
    private ArrayList<StateRuleCondition> fieldconditions;
    private ArrayList<Integer> stateids;
    private Boolean isallow;
// contains all getters and setters
}

最新更新