Example查询SQL之or查询and查询

Posted &小程序&

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Example查询SQL之or查询and查询相关的知识,希望对你有一定的参考价值。

  • 问题描述

通过Example实现如下SQL语句功能

SELECT T.* FROM DAA_ORGINFO T WHERE T.DAA_ZTNO=‘参数‘ AND T.ID = ‘参数‘ OR T.DAA_ID_SJ=‘参数‘

 



因为Example‘没有直接写or的方法,所以需要通过and来构造改SQL语句,首先我们分析一下,进行改造如下:

SELECT T.* FROM DAA_ORGINFO T WHERE (T.DAA_ZTNO=‘参数‘ AND T.ID = ‘参数‘) OR (T.DAA_ZTNO=‘参数‘ AND T.DAA_ID_SJ=‘参数‘)

 

  • 解决方法

实现方式如下:

   //1.根据订单ID查出用户ID
            Example example=new Example(TOrderOrder.class);
            Example.Criteria criteria = example.createCriteria();
            criteria.andEqualTo("id",orderId)
                     .andGreaterThan("mark",0)
                    .andEqualTo("type",1)
                    .andEqualTo("isReturn",0);
            Example.Criteria criteria2 = example.createCriteria();
            criteria.andEqualTo("id",orderId)
                    .andGreaterThan("mark",0)
                    .andEqualTo("type",2)
                    .andEqualTo("isReturn",0);
            example.or(criteria2);
            List<TOrderOrder> orderInfolist= tOrderOrderDao.getListByExample(example);

 

 

  • xml中的SQL写法,因项目问题,example重新构造,可参考如下:
 1 <select id="getDataGridByExample" resultType="com.ctg.pbis.partymanage.daaorginfo_x.entity.DaaOrginfo">
 2 SELECT T.*, GET_NAME_BYDYID(T.DAB_ID_LXR) DAB_ID_LXR_NAME, GET_NAME_BYDYID(T.DAB_ID_ZZSJ) DAB_ID_ZZSJ_NAME
 3 FROM DAA_ORGINFO T
 4 WHERE 1=1
 5 <if test="example != null">
 6 <trim suffix="" suffixOverrides="and">
 7 <trim suffix="" suffixOverrides="()">
 8 AND
 9 <trim prefix="(" suffix=")">
10 <foreach collection="example.oredCriteria" item="criteria" separator="or">
11 <if test="criteria.valid">
12 <trim prefix="(" suffix=")" prefixOverrides="and">
13 <foreach collection="criteria.criteria" item="criterion">
14 <choose>
15 <when test="criterion.noValue">
16 and ${criterion.condition}
17 </when>
18 <when test="criterion.singleValue">
19 and ${criterion.condition} #{criterion.value}
20 </when>
21 <when test="criterion.betweenValue">
22 and ${criterion.condition} #{criterion.value} and
23 #{criterion.secondValue}
24 </when>
25 <when test="criterion.listValue">
26 and ${criterion.condition}
27 <foreach collection="criterion.value" item="listItem" open="(" close=")"
28 separator=",">
29 #{listItem}
30 </foreach>
31 </when>
32 </choose>
33 </foreach>
34 </trim>
35 
36 </if>
37 </foreach>
38 </trim>
39 </trim>
40 </trim>
41 </if>
42 
43 <if test="example.orderByClause != null">
44 order by ${example.orderByClause}
45 </if>
46 
47 </select>

 

以上是关于Example查询SQL之or查询and查询的主要内容,如果未能解决你的问题,请参考以下文章

在子句查询 SQL 服务器中结合 OR 和 AND [关闭]

SQL AND OR 查询

在 AND 内具有多个 OR 条件的 SQL 查询返回 null 或空

SQL查询语句之查询数据

Laravel 雄辩的 SQL 查询与 OR 和 AND 与 where 子句

使用 sql union 子查询组合来处理客户过滤的 AND/OR 条件组合