zoukankan      html  css  js  c++  java
  • MyBatis(五)动态SQL 之 内置参数:_parameter&_databaseId

    一、两个内置参数

      不只是方法传递过来的参数可以被用来判断,取值。
             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>
  • 相关阅读:
    [再寄小读者之数学篇](2014-06-19 满足三个积分等式的函数)
    [再寄小读者之数学篇](2014-06-19 微分等式的结论)
    我的一些武功
    TEX学习笔记
    我的一些诗词
    我的课程与学生
    [再寄小读者之数学篇](2014-06-19 三维插值公式)
    [再寄小读者之数学篇](2014-06-19 旋度公式)
    JAVA小项目实例源码—学习娱乐小助手
    可拖拽的3D盒子
  • 原文地址:https://www.cnblogs.com/niujifei/p/15242235.html
Copyright © 2011-2022 走看看