泽西和对象映射器

时间:2016-08-22 06:46:01

标签: java jersey objectmapper

当我需要使用对象映射器时,我有点困惑。我认为它应该用于将数据库查询的结果集映射到对象中,所以我创建了一个像这样的对象映射器:

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"));返回正确的列表。

那么我应该何时使用映射器?

1 个答案:

答案 0 :(得分:0)

如果您正在讨论ObjectMapper(com.fasterxml.jackson.databind.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

}