Mybatis通過properties檔案配置資料庫名
阿新 • • 發佈:2018-11-11
問題:由於需要跨資料庫查詢,sql中需要使用,資料庫名.表名,但是如果寫死,測試庫和生成庫切換不方便
解決方法如下:
1、dataSource.properties檔案
內容如下:
#產品庫
#測試庫
#product_db=productdb_test
#生產庫
product_db=productdb
#訂單庫
#測試庫
#order_db=orderdb_test
#生產庫
order_db=orderdb
2、DataSourceConfig.java檔案
內容如下:
package com.upincar.common.datasource; import com.upincar.util.PropertiesUtils; public class DataSourceConfig { public final static String product_dbname = PropertiesUtils.getPropertie("dataSource.properties","product_db"); public final static String order_dbname = PropertiesUtils.getPropertie("dataSource.properties","order_db"); }
3、PropertiesUtils.java檔案
內容如下:
package com.upincar.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesUtils { /** * 讀取配置檔案的方法 * * @param fileName * 配置檔名稱 * @param key * 讀取配置檔案中的key * @return */ public static String getPropertie(String fileName,String key) { String PROPERTY_FILE = fileName; Properties prop = new Properties(); String str = null; try { String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath(); File file = new File(path + PROPERTY_FILE); if (!file.exists()) file.createNewFile(); InputStream fis = new FileInputStream(file); prop.load(fis); fis.close(); str = new String(prop.getProperty(key).getBytes("ISO-8859-1"), "UTF-8"); } catch (IOException e) { LogUtil.error(e); e.printStackTrace(); } return str; } }
4、mybaits的xml檔案
內容如下:
<select id="querySPProvince" parameterType="java.lang.String" resultType="java.lang.String">
SELECT province_name
FROM ${@[email protected]_dbname}.dealer_list
WHERE id = #{id}
</select>
註釋:xml檔案通過 ${@[email protected]_dbname}來動態配置資料庫名
原sql寫法如下,可以進行對比
<select id="querySPProvince" parameterType="java.lang.String" resultType="java.lang.String">
SELECT province_name
FROM product_db.dealer_list
WHERE id = #{id}
</select>