把一些方法用泛型概括起来,加工成工具,可以很大程度上精简代码。
表实体的一些操作
//从json文件导入数据表
@Override
public List<T> importFromJson(File jsonFile, boolean clearTable)
throws Exception {
List<T> imports = new JsonUtils<T>().readFileToEntity(jsonFile.getPath(), this.getPersistentClass());
if(clearTable){
clearTable();
for(T obj : imports){
save(obj);
}
return imports;
} else {
for(T obj : imports){
update(obj);
}
return imports;
}
}
//把表内的数据被分成json
@Override
public String backupToJson(String destFolder, boolean clearTable) throws Exception {
List<T> os = findAll();
String o = String.format("%s%s%s.json",
destFolder, File.separator, this.getPersistentClass().getName());
String userInfoBackPath = new JsonUtils<T>().saveEntityToFile(
o, os);
if(clearTable){
clearTable();
}
return userInfoBackPath;
}
注意以上用到了JsonUtil, 这个在CustomUtils中有,调用jackson包
Json文件与实体的转换
/**
*
* Function:把实体存成json文件
*
* @author WengShengyuan DateTime 2015-1-28 下午7:09:47
* @param filePath 包括文件名的全路径
* @param entity 实体列表
* @return
*/
public String saveEntityToFile(String filePath, List<T> entity) {
try{
File saveFile = new File(filePath);
File locationFolder = new File(CustomFileUtils.getFileLocation(filePath));
if(saveFile.exists())
saveFile.delete();
if(!locationFolder.exists())
locationFolder.mkdirs();
JsonGenerator jsonGenerator = null;
ObjectMapper objectMapper = new ObjectMapper();
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(saveFile,JsonEncoding.UTF8);
jsonGenerator.writeObject(entity);
//关掉流,不然删除不了文件
jsonGenerator.close();
return filePath;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
/**
*
* Function:把json文件转成实体列表
*
* @author WengShengyuan DateTime 2015-1-28 下午7:10:30
* @param filePath 文件全路径
* @param entityClass 实体的class
* @return
*/
public List<T> readFileToEntity(String filePath, Class entityClass) {
try{
List<T> returnObjs = null;
File saveFile = new File(filePath);
ObjectMapper objectMapper = new ObjectMapper();
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, entityClass);
returnObjs = (List<T>)objectMapper.readValue(saveFile, javaType);
return returnObjs;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
/**
* 把String字符串转成对象
* @param inString
* @param entityClass
* @return
*/
public T convertStringToObj(String inString, Class entityClass) {
try {
T returnObj = null;
ObjectMapper objectMapper = new ObjectMapper();
returnObj = (T) objectMapper.readValue(inString, entityClass);
return returnObj;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 把对象输出成json字符串
* @param entity
* @return
*/
public String convertObjToString(T entity) {
try {
JsonGenerator jsonGenerator = null;
ObjectMapper objectMapper = new ObjectMapper();
String objStr = objectMapper.writeValueAsString(entity);
return objStr;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}