MyBatis 读取全局变量
MyBatis 读取全局变量
- 1 设置方法
- 1.1 使用 MyBatis 配置文件中的 properties
- 1.2 使用系统环境变量
- 1.3. 使用 Java 中的全局静态变量
- 2 使用场景
- 2.1 多数据库适配
1 设置方法
在 MyBatis 中,你可以通过几种方式来读取全局变量。全局变量可以是在配置文件(如 mybatis-config.xml)中定义的,也可以是系统环境变量或 Java 中的全局静态变量。以下是几种常见的方法:
1.1 使用 MyBatis 配置文件中的 properties
你可以在 mybatis-config.xml 中定义全局变量,然后在 SQL 映射文件中引用这些变量。
步骤:
- 在 mybatis-config.xml 中定义属性:
<configuration><properties><property name="globalVar" value="someValue"/></properties><!-- 其他配置 -->
</configuration>
2.在 SQL 映射文件(Mapper XML)中使用 ${}或#{} 语法引用这些属性:
<select id="selectExample" resultType="string">SELECT * FROM your_table WHERE column_name = '${globalVar}'
</select>
1.2 使用系统环境变量
如果你的全局变量是系统环境变量,你可以直接在 MyBatis 的 SQL 映射文件中使用 ${} 语法来引用它们。
示例:
假设你有一个环境变量 ENV_VAR,你可以在 SQL 映射文件中这样使用:
<select id="selectExample" resultType="string">SELECT * FROM your_table WHERE column_name = '${env:ENV_VAR}'
</select>
1.3. 使用 Java 中的全局静态变量
如果你在 Java 代码中有一个全局静态变量,可以通过传递参数的方式将其值传递给 MyBatis 的 SQL 语句。
示例:
- 定义全局静态变量:
public class GlobalVariables {public static final String GLOBAL_VAR = "someValue";
}
2. 在 Mapper 接口中传递参数:
public interface YourMapper {List<YourType> selectExample(@Param("globalVar") String globalVar);
}
3. 在 SQL 映射文件中使用传递的参数:
<select id="selectExample" resultType="yourType">SELECT * FROM your_table WHERE column_name = #{globalVar}
</select>
4. 在调用 Mapper 方法时传递全局变量:
YourMapper mapper = sqlSession.getMapper(YourMapper.class);
List<YourType> result = mapper.selectExample(GlobalVariables.GLOBAL_VAR);
2 使用场景
2.1 多数据库适配
有的项目,根据甲方不同需要使用不同的数据库,这时候就可以通过全局变量的方式 适配不同的数据库
mybatis-config.xml 定义当前数据库类型 dbtype
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties><property name="dbtype" value="mysql"/></properties><mappers></mappers>
</configuration>
如 mapper 需要适配不同数据库的时间查询条件
<choose><when test="dbtype == 'mysql'"><include refid="mysqlSql" /></when><when test="dbtype == 'postgresql'"><include refid="postgresql" /></when><when test="dbtype == 'oracle'"><include refid="oraclesql" /></when><otherwise><include refid="defaultsql" /></otherwise>
</choose>