Java Web 开发中经常要切换数据库,还比较频繁。每切换一次就要重新配置一次 jdbc.properites
实在是麻烦。当然,maven支持多种配置,但是,速度太慢,切换一下得刷新一会儿。通过批处理的方式就快多了。
先看下 jdbc.properties
的内容
#
#Copyright © 2017 NPKW
#
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost;DatabaseName=Database
jdbc.username=sa
jdbc.password=password
前三行是注释,真正有用的是后面的4行。以切换本地的数据库与服务端的数据库为例,jdbc.properties
中的区别只是最后的三行。很自然的想到,只要能把最后的三行替换掉就行了。顺着这个思路,用批处理脚本,替换掉最后三行。实际操作的时候发现,要控制读取替换具体的某一行还是比较麻烦的操作。
考虑这个文件只有几行,可以直接将其全部覆盖。只需要将每次的配置用批处理输出到配置文件就可以了。
@echo off
SETLOCAL
set Comment=#
set Copyright=Copyright © 2017 NPKW
set Driver=jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
set LocalHost=jdbc.url=jdbc:sqlserver://localhost;DatabaseName=Database
set UserName=jdbc.username=sa
set Password=jdbc.password=password
(echo %Comment% & echo %Comment%%Copyright% & echo %Comment% & echo %Driver% & echo %LocalHost% & echo %UserName% & echo %Password%) > jdbc.properties
SETLOCAL
的意思是脚本中定义的变量,只在当前会话中有效,脚本执行完成之后,变量就会被释放掉。为了不污染系统的环境变量,最好先使用 SETLOCAL
。 然后,把将要组合的文本存储在各个变量中。 最后拼接各个变量输出到jdbc.properties。注意使用 >
符号是覆盖, >>
是追加。两个取出的字符不需要任何连接符,比如 %Comment%%Copyright%
。
回过头来看,批处理的变量的使用方式, 不需要声明,又有点像 T-SQL 语法。而且通过 /A 参数,可以用一个表达式初始化一个变量。例如: set /a sum=1+1
, sum 的值为2。 特别注意的地方,默认初始化变量, =
两边不要有空格。 例如 set b = 1
,用 echo %b%
输出得到是 %b%
而不是 1。
一开始曾想用 Powershell 去做,Powershell 非常的强大,几乎支持 .NET 的所有操作,但是 IDEA Intelij 不支持 Powershell 直接运行, 而且 Powershell 有多个版本,新的机器支持,老的机器或许就不支持了。 批处理脚本则不一样,虽然功能看起来弱了些,但是非常的稳定,兼容性也非常好,现在市面上的 Windows 系统都能够支持它。
网友评论