【问题标题】:Jersey and Object Mapper泽西岛和对象映射器
【发布时间】:2016-08-22 06:46:00
【问题描述】:

我对何时需要使用对象映射器感到有些困惑。我认为它应该用于将结果集从 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&lt;Person&gt; list = list(namedQuery("Person.findAll")); 返回一个正确的列表,似乎没有映射器也能正常工作。

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

【问题讨论】:

    标签: java jersey objectmapper


    【解决方案1】:

    如果您在谈论 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
    
    }
    

    【讨论】:

    • 结果集映射器在 org.skife.jdbi.v2.tweak.ResultSetMapper 中定义
    • 顺便说一句,Jersey 默认使用什么来处理 Json?我没有定义具体的东西
    • 我可以知道你想在哪里处理 json 吗?我的意思是任何需要处理的情况
    • 例如,用户可能会向我发送一个 json 字符串到 Web 服务,而 Jersey 正在为我自动创建一个没有映射器的对象(Web 服务的方法接收该对象作为参数).. 如何做到了吗?
    • 这就是我在发布的示例中所做的。我在 StatePojo 对象中获取一个 json 字符串,该对象是由 jquery/javascript 创建的,使用“JSON.stringify({stateid: "5" , isallow :true})" 方法,所以如果数据库包含列数据类型为 json,我可以将整个 StatePojo 保存在数据库中
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2014-10-06
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多