• 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>
  • 相关阅读:
    复制、删除、移动文件、获取文件的版本信息、更改文件属性,删除只读文件
    How to use the MQ?
    StreamReader、 StreamWriter
    我的第一个AJAX程序
    XML操作
    SQL 使用XML数据修改语言
    认识 ASP.NET 3.5 MVC 路由解析分析
    北京2008奥运会开幕式&闭幕式下载(NBCBT附字幕)
    认识 ASP.NET 3.5 MVC 路由 理解默认路由表
    每天都有新发现 2009年10月21日 Decimal 和存储过程OUTPUT
  • 原文地址:https://www.cnblogs.com/niujifei/p/15242235.html
Copyright © 2020-2023  润新知