[quote]

特别注意两点 一个是where 的用法
group的用法 
case when的用法

<if test='hasLoanApplicationFlag == "1"'>
这个对string的比较 是单引号 括起test后面的整串, 然后 == 然后双引号括起比较的字符串内容

[/quote]
[quote]

<select id="querySalesmanAndLoanInfoList" parameterType="com.zyd.orders.placeorder.model.SalesmanDO" 
resultType="com.zyd.orders.placeorder.model.SalesmanDO">

select T.salesmanId, T.salesmanCode, T.salesmanName, T.idNo, T.idType,T.phoneNo, T.channelId,T.registerDate, T.profession, T.email,
T.sumLoanAppCount, T.sumInProgressCount, T.sumFailLoanCount,T.sumReleaseCount,T.sumReleaseAmount ,T.channelName 
from 
(SELECT 
s.salesman_id as salesmanId,
s.salesman_code as salesmanCode,
s.salesman_name as salesmanName,
s.id_no as idNo, 
s.id_type as idType, 
s.phone_no as phoneNo, 
s.channel_id as channelId, 
s.register_date as registerDate, 
s.profession as profession,
s.email as email,
s.login_total_times,
count(case when ob.apply_status > 0 then ob.apply_status end) as sumLoanAppCount, 
count(case when ob.apply_status > 1 and ob.apply_status < 6 then ob.apply_status end) as sumInProgressCount,
count(case when ob.apply_status = 7 then ob.apply_status end) as sumFailLoanCount,
count(case when ob.release_status = 1 then ob.release_status end) as sumReleaseCount,
sum(case when ob.release_status = 1 then ob.release_money end) as sumReleaseAmount,
c.channel_name as channelName
from salesman s left join order_base ob 
on s.salesman_id = ob.user_id 
left join channel_vendor c
on s.channel_id = c.channel_id 
<where>
<if test="salesmanId != null and salesmanId != ''">
AND s.salesman_id = #{salesmanId}
</if>
<if test="phoneNo != null and phoneNo != ''">
AND s.phone_no = #{phoneNo}
</if>
<if test="password != null and password != ''">
AND s.password = #{password}
</if>
<if test="salesmanName != null and salesmanName != ''">
AND s.salesman_name = #{salesmanName}
</if>
<if test="idNo != null and idNo != ''">
AND s.id_no = #{idNo}
</if>
<if test="cardNo != null and cardNo != ''">
AND s.card_no = #{cardNo}
</if>
<if test="loanApplicationCode != null and loanApplicationCode != ''">
AND ob.id = #{loanApplicationCode}
</if>
<if test="registerBeginDate != null">
AND s.register_date >= #{registerBeginDate}
</if>
<if test="registerEndDate != null">
AND s.register_date <= #{registerEndDate}
</if>
</where>
group by s.salesman_id,s.salesman_code,s.salesman_name,s.id_no,s.id_type,s.phone_no,s.channel_id,s.register_date,s.profession,s.email,s.login_total_times 
) T
<where>
<if test='hasLoanApplicationFlag == "1"'>
AND T.sumLoanAppCount > 0
</if>
</where>

</select>

[/quote]

[quote]
select * from (
SELECT 
s.salesman_id as salesmanId,
s.salesman_name as salesmanName,
s.id_no as idNo, 
s.id_type as idType, 
s.phone_no as phoneNo, 
s.channel_id as channelId, 
s.register_date as registerDate, 
s.profession as profession,
s.email as email,
count(case when ob.apply_status = 7 then ob.apply_status else 0 end) as reject_count,
count(case when ob.apply_status > 1 and ob.apply_status < 6 then ob.apply_status else 0 end) as inprogress_count,
count(case when ob.apply_status > 0 then ob.apply_status else 0 end) as total_count,
count(case when ob.release_status = 1 then ob.apply_status else 0 end) as release_status,
sum(case when ob.release_status = 1 then ob.release_money else 0 end) as total_release_amt
from salesman s left join order_base ob
on s.salesman_id = ob.user_id 
where s.salesman_id = 1
group by s.salesman_id,s.salesman_name,s.id_no,s.id_type,s.phone_no,s.channel_id,s.register_date,s.profession,s.email

) t
[/quote]

mybatis 对string类型判断比较 group case when then 综合的更多相关文章

  1. 如果不空null并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。 int i = 0; i!=''。 mybatis中会返回tr

    mybatis 参数为Integer型数据并赋值0时,有这样一个问题: mybatis.xml中有if判断条件判断参数不为空时,赋值为0的Integer参数被mybatis判断为空,因此不执行< ...

  2. 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑

    1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...

  3. 每日一记-mybatis碰到的疑惑:String类型可以传入多个参数吗

    碰到一个觉得很疑惑的问题,Mybatis的parameterType为String类型的时候,能够接收多个参数的吗? 背景 初学Mybatis的时候,看的教程和书籍上都是在说基本的数据类型如:int. ...

  4. Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题

    Struts2 用 s:if test 判断String类型的对象属性值和单字符是否相等的问题   首先,这里所指的单字符形如:Y,男. 有两种做法: a. <s:if test='news.s ...

  5. 判断String类型字符串是否为空的方法

    在项目中经常遇到要判断String类型的字段是否为空操作 我们可以用Apache提供的StringUtils这个工具类,不用自己去判断,也不用自己封装判断空的方法 它有两个版本,一个是org.apac ...

  6. switch case :在JDK 7中,又加入了对String类型的支持,从此不用再写If-Else来判断字符串了

    switch的case语句可以处理int,short,byte,char类型的值, 因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出. char a = 'e ...

  7. Lua string文件类型判断和内容解析

    [1]文件名称类型判断和解析 local fileName = "shanxi201904npsdr1_200000.zip" print("len : " . ...

  8. php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断

    php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断 实际需求:把sphinx返回的结果放到ssdb缓存里,要考虑到sph ...

  9. 在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:

    在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句: 如果是String类型的字符串进行判空的时候: <if test=&q ...

随机推荐

  1. windows服务与log4net应用

    有时候我们需要用到window服务来执行定时任务,然后配合log4net记录程序运行情况,这里简单记录下配置的整个过程以及注意要点: 一.添加windows服务 1.设计页面,右键添加安装程序

  2. splice与slice区别

    共同点:均是删除数组元素并返回结果. 区别:splice会改变原数组,而slice不会.并且splice会导致数组塌陷. 数组塌陷:使用splice删除元素时,剩余的数组元素索引的顺讯会改变. let ...

  3. css height属性中的calc方法

    例如父盒子是100%的高度 盒子里面的head部分固定位140px 内容部分始终为剩余的全部高度 height: calc(100% - 140px); 切结"+或-"两边要有空格 ...

  4. C++ STL 之 set 和 pair

    set/multiset 的特性是所有元素会根据元素的值自动进行排序.set 是以 RB-tree(红黑树,平衡二叉树的一种)为底层机制,其查找效率非常好.set 容器中不允许重复元 素,multis ...

  5. BRD——>MRD——>PRD,产品经理三大文档概念详解及前后逻辑

    转自:https://blog.csdn.net/neikutaixiao/article/details/40819445 商业需求文档Business Requirement DocumentBR ...

  6. SEO要点

    SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可过分依赖div,对浏览器更友善就能更容易被抓取.2.重要的内容html代码放在前面,放在左边.搜索引擎爬虫是从左往右,从上到下进行抓 ...

  7. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  8. mock.js学习之路(二)easy-mock(Vue中使用)

    1.easy-mock建立外部数据,注册账号,创建数据,详细使用过程参照https://www.easy-mock.com/docs文档说明 2.项目中如何引入使用 ①配置一下config.index ...

  9. zookeeper不停的拒绝client连接

    1 自己重建了Zookeeper集群,但是之前的应用依赖的事务是前一个Zookeeper的集群的,所以无法识别,重启一下应用就好了

  10. Kotlin环境搭建---Hello World

    对于亲爹都已经宣布它的重要性了,那做为搞安卓的自己有理由去拒绝它么?当然目前国内真正在商业中去采用Kotlin去开发项目的应该不多,但是!这肯定会被普及的,所以为了走在时代的前言,接下来会从基础语法开 ...