此博文是从之前自己搭建的博客系统中迁移过来的。
起源
在2017年12月底,当时兴起了一个搭建自己的博客想法,然后买了服务器,开始着手搭建。但是后面由于种种原因搁置了(其实就是自己的拖延症😂)。之后断断续续写了一点代码,直到今年年后,才真正开始。
项目相关
首先此博客系统是根据Tale修改而来,主要是将后台实现替换成了Spring Boot+MyBatis+FreeMarker,在此也要感谢Tale的作者@biezhi写出了这么棒的项目。
搭建过程中遇到的问题
整个过程中遇到了大大小小不少问题,在此总结分析给大家。主要有以下问题:
- Linux下MySQL默认数据库和表名区分大小写。
- Spring Boot中实现上传图片,并可以通过链接直接访问。
- MyBatis 不同数据库SQL的兼容性处理
具体解决
Linux下MySQL默认数据库和表名区分大小写
通过修改/etc/mysql/my.cnf配置文件,在[mysqld]下增加lower_case_table_names = 1,重启服务即可。
过程中需要注意的问题是,如果已经存在包含大写字母的数据库或表,在设置不区分大小写之后,操作它们时候会报不存在的错误。所以应该先将数据库或表名修改成小写之后再做配置。
Spring Boot中实现上传图片,并可以通过链接直接访问
Spring Boot默认classpath下的static和public目录文件会作为静态资源处理,通过连接直接访问。所以一般直接将图片文件写入这两个目录下即可,但是如果将项目以jar包的形式部署,写文件时将会出现问题。
所以解决方案是将,图片文件写到磁盘固定路径,并将该路径也配置成静态资源目录即可。以下是application.yml中的相关配置。
1 | spring: |
将当前目录下的upload目录配置为静态资源目录,需要注意的是file:协议前缀不能缺少,以及./upload/需要以/结尾,否则目录下文件将无法正常访问。
MyBatis 不同数据库SQL的兼容性处理
- 配置
DatabaseIdPrivider
1 |
|
- 在
mapper.xml配置文件中编写对于不同数据库的SQL
1 | <select id="selectRandom" resultMap="BaseResultMap" databaseId="mysql"> |
这样MyBatis就能根据不同数据库执行相应的SQL。