zoukankan      html  css  js  c++  java
  • 谈谈mybatis逆向工程中的Example类

    参考博客:

    http://openwares.net/database/mybatis_generator_example.html

    一、Example类的作用:一个用于筛选复杂条件的类

    二、Example类中查询方法的介绍

           1、Criterion

             Criterion是最基本,它是最底层的Where条件,用于字段级的筛选,feild用于指代字段名字,列举如下:

                   只有一个条件,不需要其他参考值
                   feild IS NOLL
                   feild IS NOT NULL

             与一个参考值进行算数运算
                   feild > value
                   feild >= value
                   feild = value
                   feild <> value

                             其他情况
            feild <= value 和feild < value 与一个参考值进行模糊查询,参值中的%,?只能在构造查询条件时手动指定。

            例如:

            

            feild LIKE value feild NOT LIKE value 介于两个参考值之间

            feild BETWEEN value AND secondValue 在或不在一个参考值集合中

            item来自于value集合 feild IN (item,item,item,...)

            feild NOT IN (item,item,item,...)

    MyBatis Generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过Example类可以构造你想到的任何筛选条件。

       2、Criteria

          Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。

       3、oredCriteria

          Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。

    三、用法举例:

         示例来自官方文档

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    TestTableExample example = new TestTableExample();
     
      example.or()              or()在数据库表中进行 逻辑或查询
        .andField1EqualTo(5)
        .andField2IsNull();
     
      example.or()
        .andField3NotEqualTo(9)
        .andField4IsNotNull();
     
      List<Integer> field5Values = new ArrayList<Integer>();
      field5Values.add(8);
      field5Values.add(11);
      field5Values.add(14);
      field5Values.add(22);
     
      example.or()
        .andField5In(field5Values);
     
      example.or()
        .andField6Between(3, 7);

    or()方法会产生一个新的Criteria对象,添加到oredCriteria中,并返回这个Criteria对象,从而可以用链式表达,为其添加Criterion。
    产生的动态SQL是这样的:

     
     
     
     
    where (field1 = 5 and field2 is null)
         or (field3 <> 9 and field4 is not null)
         or (field5 in (8, 11, 14, 22))
         or (field6 between 3 and 7)

    四、其他情况

       Example类的distinct字段用于指定DISTINCT查询。

       orderByClause字段用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。

  • 相关阅读:
    C# 中 Struct 与 Class 的区别,以及两者的适用场合<转转转>
    <转>.NET Framework十年回顾 体积越小功能越强
    一个数组,下标从0到n,元素为从0到n的整数。判断其中是否有重复元素
    在博客园已经一年多时间了,今天开通博客了!
    C#RSA非对称加解密
    无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
    JavaScript判断浏览器类型及版本(转)
    SQL Server 海量导入数据
    数据库管理方面必知语句(问答)(转)
    JS实现的购物车
  • 原文地址:https://www.cnblogs.com/kelly-one/p/7328014.html
Copyright © 2011-2022 走看看