问题的产生
在公司某项目进行国产化适配的工作时,发现原来使用MySQL数据库的项目,切换到神通数据库后,所有的数据库操作都会报错,大体意思是找不到表。但是数据库已经通过工具完成了数据迁移工作,而且连接信息准确无误。最后得知,在使用神通数据库进行数据库操作时,要指明视图名和表名,方可进行操作,而使用mybatis生成的mapper中的sql是这样的:

只有表名而没有视图名,由于有很多自定义的方法写在了mapper文件中,使用Mybatis重新生成工作量也不小,所以这里采用了手动添加Schema的方式。
当项目代码顺利完成了国产化适配后,开始以此为底,改编成各种项目,这些项目都有两个共同特点:1是不采用国产数据库,还是回归MySQL,2就是每个项目的Schema都不一样。由此引出的问题是,手动修改xml文件中的schema工作量特别大,所以我在想,有没有可能通过全局变量或者配置文件的方式,可以相对灵活配置这个值呢?
全局变量法
全局变量法是通过新建一个全局的实体类,在里面定义一个公共变量。

随后在mapper.xml里这样使用

需要在xml文件中,通过路径指定类,再指定类中的变量进行使用。这样做的缺点在于,1是维护比较麻烦,如果项目已经上线,需要修改代码重新打包部署才能生效。2.相对于配置文件法,使用方法相对复杂。
配置文件法
配置文件法是通过在application.properties配置文件中定义指定格式的变量,然后在xml文件中使用。配置文件中的信息如下:

在xml文件中的使用方法如下

如果需要修改,则修改配置文件并重启即可生效
网友评论