最近做了一道题目,记录一下实现思路。
题目大概是:
目前JAVA程序操作数据库主要通过两种方式:
(1)JDBC:直接在JAVA源码中写SQL语句
(2)MyBatis:在XML中配置SQL语句或通过注解指定SQL语句
输入为一个JAVA源码文件zip包,统计出访问的数据库表名称以及操作类型(SELECT/UPDATE/DELETE), 其中插入insert操作归为UPDATE进行输出。最终将统计结果输出到一个txt文件,一行就是一个结果:
文件名 表名 操作类型(query/update/delete)
当时的解题思路:
这主要是能够对每个文件进行解析,利用正则表达式来匹配出大概的字符串,然后再做处理。
(当时因为工作繁忙,没啥时间,所以主要花时间在解析xml上,Java有些注解类的用法还没有时间去弄)
1. 程序入口,读取zip文件
利用java.util.zip包,将指定目录下的zip文件进行解压,拿到ZipEntry实体类,就是文件对象。过滤掉一些没用或者非法的文件,比如去掉文件夹,去掉后缀不是java或xml的文件,去掉/target目录下的文件,避免重复统计。
2. 通过第1步,拿到需要解