发表于: 2018-01-05 21:30:45

2 514


一.今天完成的主要事情

1.将客户给的元数据存放在数据库中

因为客户给的元数据不是现成的数据表,需要我们自己生成相应的数据表,所以今天的主要任务就是将数据添加到数据库中

分析业务之后,因为考点和题目相同,基本都是写死的数据,所以如果重新创建一张表,反而增加了复杂度,所以决定在题目表中添加一个字段,用于标识出该题目属于哪个考点

接下来就要建立考点和题目之间的对应关系了,而考点和题目之间客户没有直接给出,而是给出来一个考点的关键词,然后自己去表中查询id

那接下来要做的事情:

(1).根据关键词找出对应的题目Id

(2).在对应的题目记录中添加考点,因为一个题目对应多个考点,所以不能直接覆盖,在更新记录的时候要拼接起来


这么多的内容,如果用手动添加,或者写sql语句,非常容易出错,因此考虑用代码实现

用mybatis实现,一般的配置就不贴了,主要贴一个实现的sql语句

一个是查询sql,一个是更新sql

然后代码中的逻辑是先从文件中获取考点对应的关键词,然后通过关键词查询数据库,找出考点对应的id,但是这个id不能直接使用,因为不同的关键词可能搜索出来的题目是同一道题目,所以获取到idList之后还要进行除重,去除所有的重复id,最后更新id对应记录的相应字段

代码比较简单,是写在测试类中的


@Before
public void setUp() throws IOException {
InputStream inputStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}

@Test
public void updateDatabase() throws IOException {
SqlSession sqlSession = sqlSessionFactory.openSession();

SubjectPractice subjectPractice = new SubjectPractice();
List<Long> removeDuplicateList = new ArrayList<Long>();

//获取字符串List
   List<String> strList = getStrListFromFile();

System.out.println(strList);

for (int i = 0; i < strList.size(); i++) {
subjectPractice.setQuestionsStems(strList.get(i));
List<Long> resultList = sqlSession.selectList("net.xiaowenhou.modify.model.subjectPracticeMapper.selectSubjectPractice", subjectPractice);
System.out.println("---------------"+resultList);
removeDuplicateList = ListUtil.removeDuplicateElementsFromList(resultList, removeDuplicateList);
}

System.out.println("removeDuplicateList size is : " + removeDuplicateList.size());


subjectPractice.setExaminationPoint(",责任判定");
for (int i = 0; i < removeDuplicateList.size(); i++) {
subjectPractice.setId(removeDuplicateList.get(i));
sqlSession.update("net.xiaowenhou.modify.model.subjectPracticeMapper.updateSubjectPractice", subjectPractice);
}
}



public List<String> getStrListFromFile() throws IOException {


File file = new File("C:\\Users\\xiaowenhou\\Desktop\\keyFile.txt");
InputStream is = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "GBK"));

List<String> strList = new ArrayList<String>();
String line = reader.readLine();
while (line != null) {
strList.add(line);
line = reader.readLine();
}
return strList;
}

除重的功能方法如下

最终在数据库中结果为

这里多加了些逗号,这是为了让app端拿到数据之后好进行分割,取出一个一个的处理


2.完成考点相关的接口实现

具体的实现比较简单,就不贴出来了


二.明天计划完成的事情

1.配合app端调接口

2.开始重构代码


三.遇到的问题

暂无


四.收获

以上


五.项目进度情况

暂无延期风险



返回列表 返回列表
评论

    分享到