上周接到一个重构的需求,内容是当页面点击解析按钮时通过Ajax调用这个接口实现html文档解析并根据配置文件将解析的数据保存到数据库,由于要模拟真实的线上环境所以是从数据库开始。
我们的线上的数据库使用的是SQL server 所以 我们本地模拟也选用相同的数据库,框架则是spring boot+mybatis
创建项目结构,建表此处省略,我们从配置文件开始,因为只有一个功能所以只需要引入两个依赖就可以,首先我们从pom.xml文件开始
<dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
第一个依赖是用来解析HTML文档的,第二个是转json用到的这些都是常用的依赖在这里我就不详细描述了
接下来我们在去配置application.properties文件,这里没有过多的数据我并没有选择.yml
# 数据库配置
spring.datasource.url=jdbc:sqlserver://localhost:端口号;DatabaseName=数据库名称
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=xxx
spring.datasource.password=xxx
server.port=当前所用的端口
mybatis.mapper-locations=classpath:mapping/*.xml
接下来就是mapper.xml文件,因为当前的功能并不是面向客户,而是给我们的同事使用所以 sql是用配置文件去传
<mapper namespace="com.xxx.htmls.mapper.HtmlsMapper">
<select id="selectHtmls" resultType="com.xxx.htmls.bean.Htmls" parameterType="java.lang.String">
<!-- select * from htsmlist where id = #{id} -->
${sql}
</select>
<select id="selectHtmlsList" resultType="com.xxx.htmls.bean.Htmls" parameterType="java.lang.String">
<!-- select * from htsmlist where id = #{id} -->
${sqla}
</select>
<insert id="insertTable" parameterType="java.lang.String">
<!-- select * from htsmlist where id = #{id} -->
${sqlb}
</insert>
</mapper>
到这为止我们的配置文件就已经写好了
接下来就是我们外部储存sql的配置文件
<?xml version="1.0" encoding="UTF-8"?>
这里我们的sql并不是写死的 而是动态方便更换字段表名等 所以我们要把它拼接在一起 后面的参数在代码中拼接
<data>
<sqla>select *from h