• MyBatis(动态SQL2)


    一、MyBatis动态SQL的两个内置参数

    _parameter:

    _databaseId:

    接口代码:

        
      //内置参数的测试
      public List<Employee> getEmpsTestInnerParamter(Employee employee);

    xml代码:

        <!--两个内置参数:
            不只是方法传递过来的参数可以被用来判断,取值。。。
            mybatis默认还有两个内置参数:
            _parameter:代表整个参数
                单个参数:_parameter就是这个参数
                多个参数:参数会被封装为一个map;_parameter就是代表这个map
    
            _databaseId:如果配置了databaseIdProvider标签。
                _databaseId 就是代表当前数据库的别名
        -->
        <select id="getEmpsTestInnerParamter" resultType="emp">
            <if test="_databaseId=='mysql'">
              select * from tbl_employee
              <if test="_parameter != null">
                  where last_name=#{lastName}
              </if>
            </if>
            <if test="_databaseId=='oracle'">
                select * from employees
                <if test="_parameter != null">
                    where last_name=#{lastName}
                </if>
            </if>
        </select>

    全局配置文件mybatis-config.xml:

        <!--
            databaseIdProvider:支持多数据库厂商
            type:作用就是得到数据库厂商的标识,mybatis就能根据数据库厂商的标识来执行不同的sql。
        -->
        <databaseIdProvider type="DB_VENDOR">
            <!-- 为不同的数据库厂商起别名 -->
            <property name="MySQL" value="mysql"/>
            <property name="Oracle" value="oracle"/>
            <property name="SQL Server" value="sqlserver"/>
        </databaseIdProvider>

    _parameter相当于传入的参数employee,判断employee是否为空,若不为空则执行where条件。

    即简单一句话,有值才会执行,当为null,就成了查所有。 

    二、bind绑定

    在增删改查的标签中还可以写bind标签。

        <select id="getEmpsTestInnerParamter" resultType="emp">
    
        <!-- bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值 -->
            <bind name="_lastName" value="'%'+lastName+'%'"/>
    
            <if test="_databaseId=='mysql'">
            select * from tbl_employee
            <if test="_parameter != null">
                where last_name like #{_lastName}
            </if>
            </if>
        </select>

    把传来的参数拼接后绑定一个变量。或者直接使用 '%${lastName}%'拼接(不安全)。

    三、sql标签

    抽取可重用的sql片段,方便后面引用。

        <!--抽取可重用的sql片段,方便后面引用
            1、sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用
            2、include来引用已经抽取的sql
            3、include还可以自定义一些property,sql标签内部就能使用自定义的属性,然后${}取值,#{}不能用。
        -->
        <sql id="insertColumn">
          last_name,email,gender,d_id
        </sql>

    引用:在需要该sql片段的地方引用

    <include refid="insertColumn"></include>
  • 相关阅读:
    YUI(YUIcompressor)压缩参数选项
    js进制转换两则
    软件代码生成工具软工厂V2.0版本上线!欢迎新老用户免费使用!
    软件代码自动化生成工具我们该不该用!
    软件代码生成工具软工厂V2.0版本免费使用地址+教学视频,快速完成开发任务。
    转发在.NET上使用ZeroMQ
    . Net环境下消息队列(MSMQ)对象的应用
    消息队列软件产品大比拼
    ubuntu服务器安装指南
    简单的分布式应用程序日志记录器(logger)-基于MSMQ(消息队列)
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/11919864.html
Copyright © 2020-2023  润新知