精华内容
下载资源
问答
  • Hibernate 条件or查询 循环多个or条件今天公司让我做一个列表查询页面,因为还是对于hibernate的不熟悉刚出来经验不足,代码敲得少,所有导致了种种困难…页面左边有个多级菜单栏,因为种种需求需要我用到SQL查询...

    Hibernate 条件or查询 循环多个or条件

    今天公司让我做一个列表查询页面,因为还是对于hibernate的不熟悉刚出来经验不足,代码敲得少,所有导致了种种困难…页面左边有个多级菜单栏,因为种种需求需要我用到SQL查询条件里面的or(或者),但因为用的是hibernate所以我苦苦在网上搜寻,得到了如下代码:

    Criteria criteria = this.createCriteria();
    criteria.add(Restrictions.or(Restrictions.eq("name","a"),Restrictions.eq("name","b")));
    

    但是这样只能是一次写一个or条件,我的需求需要我写类似name=”a”or name=”b” or name=”c”……
    所有我又继续搜索,得到了如下代码:

    Criteria criteria = this.createCriteria();
    Disjunction dis = Restrictions.disjunction();
    for (int i = 0; i < 5; i++) {
                    dis.add(Restrictions.eq("name", ""+i));
    }
    criteria .add(dis);
    

    问题完美解决。
    所有当只需要一个or条件时可以用Restrictions.or();当用到多个or条件时,就需要用到Restrictions.disjunction();

    这是我的第一篇博客。刚到上海工作不到半年,希望能快速的进步!加油!!!!
    Alvin_先森

    展开全文
  • sql: select * from table t where (t.name like '%张三%' or t.schoolName like '%张三%' or t.cityname like '%张三%') 用Nhibernate Criteria就可以写成 var criteria = NHibernateSessionReader....

    sql: select * from table t where (t.name like '%张三%' or t.schoolName like '%张三%' or t.cityname like '%张三%')

     

    用Nhibernate Criteria就可以写成

     var criteria = NHibernateSessionReader.CreateCriteria(typeof(Contract));

                if (!string.IsNullOrEmpty(keyWord))
                {

          criteria.Add(Expression.Like("name", keyWord, MatchMode.Anywhere)
                           || Expression.Like("school", "%" + keyWord + "%")
                           || Expression.Like("cityname", "%" + keyWord + "%")                    
                           || Expression.Like("province", "%" + keyWord + "%")
                           || Expression.Like("UserName", "%" + keyWord + "%")); 

         }

    或者

        if (!string.IsNullOrEmpty(keyWord))
                {

         criteria.Add(
                        Restrictions.Or(Expression.Like("name", keyWord, MatchMode.Anywhere),
                        Restrictions.Or(Expression.Like("school", keyWord, MatchMode.Anywhere),
                        Restrictions.Or(Expression.Like("cityname", keyWord, MatchMode.Anywhere),
                        Restrictions.Or(Expression.Like("province", keyWord, MatchMode.Anywhere),
                        Restrictions.Or(Expression.Like("UserName", keyWord, MatchMode.Anywhere),
                        Restrictions.Like("UserName", keyWord, MatchMode.Anywhere)))))));

        }

    转载于:https://www.cnblogs.com/lyeo/p/3938345.html

    展开全文
  • Criteria条件查询

    2010-08-17 14:05:30
    Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:Criteria criteria = session.createCriteria(User.class);criteria.add...

    Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:

    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Expression.eq("name","Erica");
    criteria.add(Expression.eq("sex",new Integer(1)));

    这里的criteria 实例实际上是SQL “Select * from t_user where name=’Erica’ and sex=1”的封装(我们可以打开Hibernate 的show_sql 选项,

    以观察Hibernate在运行期生成的SQL语句)。

    Hibernate 在运行期会根据Criteria 中指定的查询条件(也就是上面代码中通过criteria.add方法添加的查询表达式)生成相应的SQL语句。这种方式的特点是比较符合Java 程序员的编码习惯,并且具备清晰的可读性。正因为此,不少ORM实现中都提供了类似的实现机制(如Apache OJB)。

    对于Hibernate的初学者,特别是对SQL了解有限的程序员而言,Criteria Query无疑是上手的极佳途径,相对HQL,Criteria Query提供了更易于理解的查询手段,借助IDE的Coding Assist机制,Criteria的使用几乎不用太多的学习。

    Criteria 查询表达式

    Criteria 本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。如前例所示,Expression 对象具体描述了查询条件。针对SQL 语法,Expression提供了对应的查询限定机制,包括:

    方法 描述

    Expression.eq 对应SQL“field = value”表达式。
    如Expression.eq("name","Erica"

    Expression.allEq 参数为一个Map对象,其中包含了多个属性-值对应关系。相当于多个Expression.eq关系的叠加。

    Expression.gt 对应SQL中的 “field > value ” 表达式

    Expression.ge 对应SQL中的 “field >= value” 表达式

    Expression.lt 对应SQL中的 “field < value” 表达式

    Expression.le 对应SQL中的 “field <= value” 表达式

    Expression.between 对应SQL中的 “between” 表达式

    如下面的表达式表示年龄(age)位于13到50区间内。
    Expression.between("age",new Integer(13),new Integer(50));

    表达式Expression.in 对应SQL中的 ”field in …” 表达式

    Expression.eqProperty 用于比较两个属性之间的值,对应SQL中的“field= field”。
    如:
    Expression.eqProperty("TUser.groupID","TGroup.id";

    Expression.gtProperty 用于比较两个属性之间的值,对应SQL中的“field> field”。

    Expression.geProperty 用于比较两个属性之间的值,对应SQL中的“field>= field”。

    Expression.ltProperty 用于比较两个属性之间的值,对应SQL中的“field< field”。

    Expression.leProperty 用于比较两个属性之间的值,对应SQL中的“field<= field”。

    Expression.and and关系组合。
    如:
    Expression.and(Expression.eq("name","Erica",Expression.eq("sex",new Integer(1)));

    Expression.or or关系组合。
    如:
    Expression.or(Expression.eq("name","Erica",Expression.eq("name","Emma");

    Expression.sql 作为补充,本方法提供了原生SQL语法的支持。我们可以通过这个方法直接通过SQL语句限定查询条件。

    下面的代码返回所有名称以“Erica”起始的记录:
    Expression.sql("lower({alias}.name) like lower(?)","Erica%",Hibernate.STRING);
    其中的“{alias}”将由Hibernate在运行期使用当前关联的POJO别名替换。

    注意Expression 各方法中的属性名参数(如Express.eq中的第一个参数),这里所谓属性名是POJO中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。


    Criteria 高级特性

    限定返回的记录范围
    通过criteria. setFirstResult/setMaxResults 方法可以限制一次查询返回的记录范围:

    Criteria criteria = session.createCriteria(TUser.class);
    //限定查询返回检索结果中,从第一百条结果开始的20条记录
    criteria.setFirstResult(100);
    criteria.setMaxResults(20);

    对查询结果进行排序

    //查询所有groupId=2的记录
    //并分别按照姓名(顺序)和groupId(逆序)排序
    Criteria criteria = session.createCriteria(TUser.class);
    criteria.add(Expression.eq("groupId",new Integer(2)));
    criteria.addOrder(Order.asc("name");
    criteria.addOrder(Order.desc("groupId");

    Criteria作为一种对象化的查询封装模式,不过由于Hibernate在实现过程中将精力更加集中在HQL查询语言上,因此Criteria的功能实现还没做到尽善尽美(这点上,OJB的Criteria 实现倒是值得借鉴),因此,在实际开发中,建议还是采用Hibernate 官方推荐的查询封装模式:HQL。 

    展开全文
  • Mybatis中的Criteria条件查询

    万次阅读 2019-05-11 00:06:06
    Criterion Criterion是最基本,最底层的Where条件,用于字段级的筛选。 Criteria Criteria包含一个...Example类的distinct字段用于指定DISTINCT查询。 orderByClause字段用于指定ORDER BY条件,这个条件没有构造...

    Criterion

    Criterion是最基本,最底层的Where条件,用于字段级的筛选。

    Criteria

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

    其它

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

    代码示例

    import java.io.IOException;
    import java.io.Reader;
    import java.util.ArrayList;
    import java.util.List;
     
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.apache.log4j.pattern.ClassNamePatternConverter;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
     
    import cn.itcast.ssm.mapper.ItemsMapper;
    import cn.itcast.ssm.po.ItemsExample;
     
    public class Student {
     
        public static void main(String[] args) throws IOException {
            /*方式一  */
            ItemsExample itemsExample1 = new ItemsExample();
            itemsExample1.or().andIdEqualTo(5).andNameIsNotNull();
            itemsExample1.or().andPicEqualTo("xxx").andPicIsNull();
     
            List<Integer> fieldValues = new ArrayList<Integer>();
            fieldValues.add(8);
            fieldValues.add(11);
            fieldValues.add(14);
            fieldValues.add(22);
            itemsExample1.or().andIdIn(fieldValues);
            itemsExample1.or().andIdBetween(5, 9);
     
            /*  方式二 criteria1与criteria2是or的关系 */
            ItemsExample itemsExample2 = new ItemsExample();
            ItemsExample.Criteria criteria1 = itemsExample2.createCriteria();
            criteria1.andIdIsNull();
            criteria1.andPriceEqualTo((float) 3);
     
            ItemsExample.Criteria criteria2 = itemsExample2.createCriteria();
            criteria2.andNameIsNull();
            criteria2.andIdGreaterThanOrEqualTo(5);
            itemsExample2.or(criteria2);
     
            //方式一和方式二是等价的 
            // spring获取mapper代理对象
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
            ItemsMapper itemsMapper = (ItemsMapper) applicationContext.getBean("itemsMapper");
            itemsMapper.countByExample(itemsExample2);
     
            // 获取SqlSessionFactory
            String resource = "SqlMapConfig.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
            // 获取SqlSession
            SqlSession sqlSession = sqlMapper.openSession();
        }
    }
    
    展开全文
  • mongoTemplate的GroupOperation分组查询Criteria条件查询的使用 GroupOperation: //此处类似于SQL中的groupBy,group("")参数可以是String,也可以是String数组 String[] groupKeys = new String[4]; Group...
  • Nhibernate Criteria 多个or条件以及Like查询 添加引用:using NHibernate .Criterion ; //创建查询条件集合 IList<ICriterion> query = new List() ; 1. 调用Expression .Or query .Add (Expression ....
  • Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:Criteria criteria = session.createCriteria(User.class);criteria.add...
  • Criteria封装查询条件

    千次阅读 2018-01-23 18:31:08
    转自:... criteria 英[kraɪˈtɪərɪə] 美[kraɪˈtɪrɪə] 标准 1,Criteria ...Hibernate 设计了CriteriaSpecification 作为 Criteria 的父接口,下面提供了 Criteria和DetachedCrit
  • in查询: public List&lt;ArchivesApplication&gt; getPostList(String[] status) throws AppException { Criteria criteria = this.getSession().createCriteria(ArchivesApplication.class); criteria....
  • Criteria查询

    千次阅读 2013-12-05 23:18:44
    Criteria 可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式,Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode (数据库锁模式)。  ...
  • Criteria的两个or条件很简单, criteria.add( Restrictions.or(Restrictions.eq( "age", new Integer(0) ), Restrictions.isNull("age") ) ) ; 那如果多个呢??比如10个条件。 不会要这样吧: ...
  • mybatis :Criteria 查询条件过滤用法

    千次阅读 2018-12-05 10:58:06
    PS:hibernate 中也有 Criteria 的用法,见另一文章:jpa : criteria 作排除过滤、查询 1. 包: import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example.Criteria; 2. 使用: ...
  • Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:Criteria criteria = session.createCriteria(User.class);criteria.add...
  • mybits使用criteria 进行or查询

    千次阅读 2017-10-18 09:02:00
    想要进行select * from A where (xx=a and xx=b) or (xx=c and xx=d)的查询操作 xx可以为A表中的任意属性,前面括号里的xx可以和后面括号的相同也可以不同 具体写法 OrderEntityExample example=new ...
  • 我们在开发中使用MyBatis Generator生成的 XxxExample查询时,咋添加 or 查询时候,可能两个 Example.Criteria 对象的条件存在交集,即多个查询条件是相同的。每个查询条件的添加可能需要进行多种逻辑判断,这样多...
  • 分页查询+多条件查询,使用Criteria查询,逻辑清楚而且方便,避免了过多的if else 语句。以下代码中因为查询结果要进行分页,多以将每页数据和查询总数封装到map中传到前台,以供前台bootstrap-table插件使用 ...
  • 普元 EOS Platform 7.5 如何把DataObject数组元素的值赋值给Criteria作为查询条件
  • 使用criteria进行多条件查询

    千次阅读 2013-01-10 19:48:48
    criteria是Morphia框架提供...感觉criteria是为批量处理多条件查询使用,把所有要查询的属性一一创建criteria,返回一个FieldEnd对象,再用query进行and或or一下,这时就返回个CriteriaContainer。 下面的代码将sms...
  • 此外,Hibernate还支持Criteria查询Criteria Query),这种查询方式把查询条件封装为一个Criteria对象。在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询...
  • 关于springboot整合mongodb,可... /* 查询嵌入对象的值 */ query_1.addCriteria(Criteria.where("ename.firstname").is("san")); List userList = mongoTemplate.find(query_1, Userinfos.class, "userinfos"); } }
  • Java使用Criteria实现多条件查询

    千次阅读 2020-01-09 10:22:48
    前端传入多个查询条件,根据查询条件查询字段和值使用Java对MongoDB进行多条件筛选。 实现方法: 查询条件传入List<JSONObject>,格式如下: [ { "condition": "is", "key":"name" "value": "xxxxxx...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,070
精华内容 6,428
关键字:

criteria条件查询or