发表于: 2018-01-23 23:04:15
2 797
今天完成的事情:
1. 完成2个接口
添加步骤,查看步骤接口
明天计划的事情
1. 修改和删除步骤接口
2. 教材上下架接口
遇到的问题:
spring 3的坑:
@RequestMapping(value = "/a/u/admin/book/task/", method = RequestMethod.PUT)
public String updateTaskJson(HttpServletRequest request,
HttpServletResponse response, ModelMap model,@RequestBody Task task) throws Exception {
}
spring 3版本controller接收一个List<Model> 的类型的时候会出现
报错:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.ptteng.playlearn.ojbk.course.model.Step
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
原因为:spring 3的版本不能很好的映射 List<model> 只能处理为linkedHashMap 如下图:
解决方法:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.8</version>
</dependency>
stepList = JsonUtil.parseJsonList(JsonUtil.toJsonStr(stepList),Step.class) ;
*/
public class JsonUtil {
private static ObjectMapper INSTANCE = new ObjectMapper();
private JsonUtil() {}
/**
* @param obj 准备转换对象
* @description 对象转换成json字符串
* @author paul
*/
public static String toJsonStr(Object obj) {
try {
return INSTANCE.writeValueAsString(obj);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @param json 准备转换json
* @param type 转换类型
* @throws Exception 转换异常
* @description json字符串转换成对象
* @author paul
*/
@SuppressWarnings("unchecked")
public static <T> T parseJson(String json, String type) {
try {
return (T) parseJson(json, Class.forName(type));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* @param json 准备转换json
* @param clazz 转换类型
* @description json字符串转换成对象
* @author paul
*/
public static <T> T parseJson(String json, Class<T> clazz) {
try {
return (T) INSTANCE.readValue(json, clazz);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @param json 准备转换json
* @param clazz 集合元素类型
* @description json字符串转换成对象集合
* @author paul
*/
@SuppressWarnings("unchecked")
public static <T> List<T> parseJsonList(String json, Class<T> clazz) {
try {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
return (List<T>) INSTANCE.readValue(json, javaType);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @param collectionClass 集合类
* @param elementClasses 集合元素类
* @description 获取泛型的ColloectionType
* @author paul
*/
private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return INSTANCE.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
收获:
1. 公司框架里的selectList 使用 UNION ALL这个SQL个关键词,当由Id查询多个model的时候,每一个查询都是一个select语句
然后用UNION ALL 链接起来,作用就是每一个语句都会生效执行,并且相同的查询结果不会只有一个,而是由链接顺序查询而出
例如:
SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2
步骤修改 ,删除 教材上下架接口
预计完成时间:1.24
DOME时间:2018-2-9
评论