发表于: 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.开始重构代码
三.遇到的问题
暂无
四.收获
以上
五.项目进度情况
暂无延期风险
评论