Java 运动衫和对象映射器

Java 运动衫和对象映射器,java,jersey,objectmapper,Java,Jersey,Objectmapper,对于何时需要使用对象映射器,我有点困惑。我认为它应该用于将DB查询的结果集映射到对象,因此我创建了一个对象映射器,如下所示: public class PersonMapper implements ResultSetMapper<Person> { public Person map(int index, ResultSet resultSet, StatementContext ctx) throws SQLException { Person p

对于何时需要使用对象映射器,我有点困惑。我认为它应该用于将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;
    }
}
public类PersonMapper实现resultspepper
{
公共人物映射(int索引、ResultSet ResultSet、StatementContext ctx)引发SQLException
{
Person=新人();
person.setPersonId(resultSet.getShort(“PersonId”);
person.setPersonType((PersonType)resultSet.getObject(“PersonType”);
person.setPersonName(resultSet.getString(“PersonName”);
person.setPersonMobile(resultSet.getString(“PersonMobile”);
返回人;
}
}
然后我向特定的DAO注册了它,如下所示:
@RegisterMapper(PersonMapper.class)

然而,即使我做了这样的查询,
List-List=List(namedQuery(“Person.findAll”))返回正确的列表


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

如果您谈论的是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

}
公共类StatePojo实现可序列化{
私有整数stateid;
私有ArrayList字段条件;
私有ArrayList状态ID;
私有布尔是允许的;
//包含所有getter和setter
}

org.skife.jdbi.v2.tweak.ResultSetMapper中定义了结果集映射器Jersey在处理Json时默认使用什么?我没有定义具体的东西。我可以知道您想在哪里处理json吗?我指的是需要处理的任何情况,例如,用户可能会向web服务发送json字符串,Jersey会在没有映射器的情况下自动为我创建一个对象(web服务的方法将该对象作为参数接收)。。它是如何做到的?这就是我在发布的示例中所做的。。我在StatePojo对象中得到一个json字符串,它是由jquery/javascript使用“json.stringify({stateid:“5”,isallow:true})”方法创建的,所以如果数据库包含作为json的列数据类型,我可以将整个StatePojo保存在数据库中