当我需要使用对象映射器时,我有点困惑。我认为它应该用于将数据库查询的结果集映射到对象中,所以我创建了一个像这样的对象映射器:
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"));
返回正确的列表。
那么我应该何时使用映射器?
答案 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
}