在接口中声明方法:
public List<Employee> getEmpsTestInnerParameter(Employee employee);
在对应的 xml 中配置:
<!--
public List<Employee> getEmpsTestInnerParameter(Employee employee);
-->
<select id="getEmpsTestInnerParameter" resultType="Employee">
<if test="_databaseId==‘mysql‘">
select * from tbl_employee
<if test="_parameter!=null"> <!-- 先通过_parameter判断传递的参数中是否有值-->
where last_name = #{_parameter.lastName}
</if>
</if>
<if test="_databaseId==‘oracle‘">
select * from employees
<if test="_parameter!=null">
where last_name = #{lastName}
</if>
</if>
</select>
在核心配置文件 mybatis-config.xml 中动态切换数据库
<environments default="dev_mysql"> 切换mysql或Oracle数据库环境
<environment id="dev_mysql">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
<environment id="dev_oracle">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${orcl.driver}" />
<property name="url" value="${orcl.url}" />
<property name="username" value="${orcl.username}" />
<property name="password" value="${orcl.password}" />
</dataSource>
</environment>
</environments>
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
MyBatis(五)动态SQL 之 内置参数:_parameter&_databaseId
原文:https://www.cnblogs.com/niujifei/p/15242235.html