首页 > 数据库技术 > 详细

MyBatis(五)动态SQL 之 内置参数:_parameter&_databaseId

时间:2021-09-09 06:28:47      阅读:30      评论:0      收藏:0      [点我收藏+]

一、两个内置参数

  不只是方法传递过来的参数可以被用来判断,取值。
         mybatis默认还有两个内置参数:
         (1)_parameter:代表整个参数
             单个参数:_parameter就是这个参数
             多个参数:参数会被封装为一个map;_parameter 就是代表这个 map
  (2)_databaseId:如果配置了databaseIdProvider标签。
    _databaseId:就是代表当前数据库的别名(如mysql,Oracle)
 
  若在 mybatis 配置文件中配置了 databaseIdProvider , 则可以使用 “_databaseId”变量, 这样就可以根据不同的数据库厂商构建特定的语句

二、测试

  在接口中声明方法:

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!