当我需要使用对象映射器时,我有点困惑。我认为它应该用于将结果集从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
}