Sql字段动态比较判断

<sql id="getUserInfoList_body">
SELECT * from userinfo
<dynamic prepend="WHERE">
  <isNotNull prepend="AND" property="id"> a.id=#id#</isNotNull>
  <isNotNull prepend="AND" property="userName"> a.userName like concat('%', #userName#, '%') </isNotNull>
  <isNotNull prepend="AND" property="inschoolTimeEnd"> a.inschoolTime &lt; #inschoolTimeEnd# </isNotNull>
  <isNotNull property="roleID">
<isEqual property="roleID" compareValue="3" prepend="AND">
addrProvinceID in (SELECT areaID FROM co_user_area WHERE adminID = #adminID#)</isEqual>
<isEqual property="roleID" compareValue="4" prepend="AND">
addrCityID in (SELECT areaID FROM co_user_area WHERE adminID = #adminID#)</isEqual>
  </isNotNull>
</dynamic>
ORDER BY a.id DESC
</sql>

sql语句返回主键id     

<insert id="">      //注意无需resultClass

  <selectKey resultClass="int" keyProperty="id">
  SELECT @@IDENTITY AS id
  </selectKey>
</insert> public Integer insert(Invoice invoice) throws DAOException {
return (Integer)getSqlMapClientTemplate().insert("insert",invoice);
}

sql时间范围查询条件  

//一
< isNotNull prepend="AND" property="createStartDateStr">
  CONVERT(varchar(100), kb.createDate , 23) &gt;= #createStartDateStr#
</isNotNull>
<isNotNull prepend="AND" property="createEndDateStr">
  CONVERT(varchar(100),kb.createDate,23) &lt;=#createEndDateStr#
</isNotNull> //二
<isNotNull prepend="AND" property="startTime">
  kc.createDate >= #startTime#
</isNotNull>
<isNotNull prepend="AND" property="endTime">
  <![CDATA[kc.createDate <= #endTime#]]>
</isNotNull> //三
<isNotNull prepend="AND" property="startTime">
  CONVERT(varchar(100), kb.createDate , 23) &gt;= #startTime#
</isNotNull>
<isNotNull prepend="AND" property="endTime">
  CONVERT(varchar(100), kb.createDate , 23) &lt;= #endTime#
</isNotNull>

sql每月数据统计  

SELECT
COUNT(DISTINCT kes.userID) AS examCount,
CONVERT(nvarchar(7), kesd.createTime, 120) AS month
FROM kp_out_system kos WITH (NOLOCK)
LEFT JOIN kp_exam_score kes WITH (NOLOCK)
ON kes.outSystemSign = kos.outSystemSign
LEFT JOIN kp_exam_score_detail kesd WITH (NOLOCK)
ON kesd.examScoreID = kes.id AND kesd.valid = 1
< isNotNull prepend="AND" property="startTime"> kesd.createTime &gt;= #startTime# </isNotNull>
<isNotNull prepend="AND" property="endTime"> kesd.createTime &lt;= #endTime# </isNotNull>
WHERE kos.status = 1
<isNotNull prepend="AND" property="outSystemSign"> kos.outSystemSign=#outSystemSign# </isNotNull>
AND kos.outSystemSign IS NOT NULL AND kos.sysAreaID IS NOT NULL AND kesd.createTime IS NOT NULL
GROUP BY CONVERT(nvarchar(7), kesd.createTime, 120)
ORDER BY CONVERT(nvarchar(7), kesd.createTime, 120)

sqlsum()结果判空 

SELECT ISNULL(SUM(myTable.thesisCount),0) AS thesisCount FROM (
  SELECT
COUNT(kuu.id) AS thesisCount,
ISNULL(kos.outSystemName, '无') AS outSystemName
FROM kp_out_system kos WITH (NOLOCK)
LEFT JOIN kp_user_upload_thesis kuu WITH (NOLOCK) ON kuu.outSystemSign = kos.outSystemSign AND kuu.valid = 1
WHERE kos.status = 1
   <isNotNull prepend="AND" property="outSystemSign"> kuu.outSystemSign = #outSystemSign# </isNotNull>
AND kos.outSystemSign IS NOT NULL AND kos.sysAreaID IS NOT NULL
GROUP BY ISNULL(kos.outSystemName, '无')
) AS myTable

验证某个属性是否已存在(修改信息时用)

select COUNT(*) from ... where id != #id# and ... = #...#

sql数组传参(in

//Action代码
if (null != studyID && 2 == studyID.intValue()) {
Integer[] studyIDs = new Integer[] { 2,3, 4 };
userInfo.setStudyIDs(studyIDs);
} else {
userInfo.setStudyID(studyID);
} //Xml文件
<isNotNull prepend="AND" property="studyID">
a.studyID=#studyID#
</isNotNull>
<isNotNull prepend="AND" property="studyIDs">
a.studyID in
<iterate property="studyIDs" open="(" close=")" conjunction=",">
#studyIDs[]#
</iterate>
</isNotNull>

Int类型拼接需要使用cast()  

SELECT (SELECT DISTINCT
CAST(studyID AS varchar) + ','
FROM kp_study_type
WHERE outSystemSign = 'drivingcoach' AND valid = 1
FOR xml PATH (''))
AS studyIDs,
ISNULL(
SUM(CASE
WHEN b.isPass = 1 THEN 1 ELSE 0
END), 0) AS isPassCount,
ISNULL(
SUM(CASE
WHEN b.isOpen = 1 OR b.isOpen = 3 THEN 1 ELSE 0
END), 0) AS isOpenCount,
ISNULL(
SUM(CASE
WHEN b.isOpen = 1 OR b.isOpen = 3 THEN 0 ELSE 1
END), 0) AS isNotOpenCount
FROM kp_study_type a WITH (NOLOCK)
INNER JOIN kp_select_studyType b WITH (NOLOCK)
ON a.studyID = b.studyID AND b.valid = 1
INNER JOIN kp_user_info kui WITH (NOLOCK)
ON kui.ID = b.userID AND kui.valid = 1
LEFT JOIN (SELECT
k.studyID,
k.userID,
SUM(k.studyTimes) studyTimes,
SUM(CASE
WHEN k.studyTimes >= k.studyTime * 60 THEN 1 ELSE 0
END) coursefinishCount,
COUNT(k.courseID) courseCount
FROM (SELECT
r.studyID,
t.userID,
SUM(t.studyTimes) AS studyTimes,
r.courseID,
r.studyTime
FROM kp_studyCourse_relation r WITH (NOLOCK)
LEFT JOIN kp_course c WITH (NOLOCK)
ON r.courseID = c.id
LEFT JOIN kp_study_course_time t WITH (NOLOCK)
ON c.courseNumber = t.courseNumber AND t.studyID = r.studyID
WHERE r.valid = 1 AND c.valid = 1 AND t.id IS NOT NULL
GROUP BY r.studyID,
t.userID,
r.courseID,
r.studyTime) k
GROUP BY k.studyID,
k.userID) e
ON a.studyID = e.studyID AND b.userID = e.userID
WHERE a.valid = 1 AND a.studyID IN (SELECT DISTINCT
studyID
FROM kp_select_studyType
WHERE outerSystemSign = 'drivingcoach' AND valid = 1 AND isOpen = 1)

sql截取字符串 

SELECT DISTINCT
ISNULL(SUBSTRING(areaID, 1, 6), 0) AS areaID
FROM kp_user_info

SELECT
TOP 10
kui.username
FROM kp_user_info kui WITH (NOLOCK)
LEFT JOIN dic_area dc WITH (NOLOCK)
ON RIGHT(kui.areaID, 6) = dc.areaID

地区搜索,传参设置

if(null != provinceID && !"000000".equals(provinceID)){
productOrder.setAreaID(provinceID);
}
if(null!=cityID && cityID != ""){
//数据库存储为110000:110101,依据存储方式设置
productOrder.setAreaID(provinceID+":"+cityID);
} <dynamic prepend="">
<isNotNull prepend="AND" property="areaID">
    kui.areaID like #areaID# + '%'
   </isNotNull>
</dynamic>

以...开头

*
FROM computer
WHERE sex = '男' AND LEFT(name, 1) IN ('李', '陈')

SELECT
*
FROM computer
WHERE sex = '男'
(and name like '李__'or name like '陈__')

跨库复制表数据

//-1-
SET IDENTITY_INSERT cdel_jxjy_flat20171106..op_ip_login_control ON;
//-2-
INSERT INTO cdel_jxjy_flat20171106..op_ip_login_control (id, ip, notes, valid, creator, createTime)
SELECT * FROM cdel_jxjy_flat0725..op_ip_login_control

Mapper查询技巧的更多相关文章

  1. SQL高级查询技巧

    SQL高级查询技巧   1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重 ...

  2. google查询技巧

    技巧一:使用正确的方法 无论你是使用一个简单或是高级的Google搜索,在此都存在你应该使用的某种可靠的方法.遵循适当的方法你就能获得非常准确的结果:要是忽略这条建议的话,你也许就会看到大量不相关的结 ...

  3. MySQL翻页查询技巧

    在查询大量数据库,一般都会采用翻页.自然会想到offset跟limit. 今天知道了一个技巧,用id查询.因为id是主键,查起来很快. 思路是:给id一个区间做where条件,将数据分隔成几份,然后每 ...

  4. SQLServer多条件查询技巧

    2019-10-15  13:31:04 在实际项目开发中,有很多页面都会出现多条件查询功能,类似于这种情况: 牵扯到数据就少不了数据库了.这么多条件的查询,如果要用常规的if else来写判断逻辑的 ...

  5. 2020想进大厂你不得不了解的MySQL意外事件的查询技巧

    导读:数据库是导致应用系统运行缓慢的常见原因.面对数据库引性能问题,很多开发者或者DBA却束手无策.本文作者经过多年的实际经验,整理了一些材料,将Linux环境下MySQL性能突发事件问题排查技巧分享 ...

  6. 【转】sql各种查询技巧

    高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student;   --all 查询所有 select all sex from ...

  7. SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)

    掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open ...

  8. Oracle优化查询技巧

    1. WHERE子句中的连接顺序:Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的 ...

  9. hql查询技巧

    要擅于利用对象之间映射的集合去查与其关联的对象,而不是直接在dao层重新写查询的方法,其实,hibernate正是对复杂查询的一种解放,既然有现成的东西,何必再去闭门造车,而且造出来的还是个旧车. 查 ...

随机推荐

  1. 【vue】入门介绍

    一.前端开发工具vscode 前端代码编写工具,使用vscode:vscode官网 安装好之后,可以先装如下几个插件,方便后续的开发. 二.编写代码 1.vscode快捷键生成html代码 在vsco ...

  2. windows 10放大125%后字体模糊(已解决)、win10 文字放大之后变模糊 解决办法

    windows 10放大125%后字体模糊解决办法 百度搜索 "Windows10_DPI_FIX" 或者用这个地址下载下载地址   https://gallery.technet ...

  3. 看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap

    引言 面试官: 小伙子你有点眼熟啊,是不是去年来这面试过啊. 二胖: 啊,没有啊我这是第一次来这. 面试官: 行,那我们开始今天的面试吧,刚开始我们先来点简单的吧,java里面的容器你知道哪些啊,跟我 ...

  4. Node项目模板管理脚手架ptm-cli开发

    目录 一.ptm-cli 使用说明 1.特点 2.安装 3.使用 1)基础帮助命令 2)添加模板/项目 3)编辑模板/项目 4)查看模板/项目 5)删除模板/项目 6)基于模板新建/初始化项目 二 p ...

  5. saltstack批量管理文件和计划任务

    简介 saltstack是由thomas Hatch于创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统.用来管理你的基础架构,可轻松管理成千上万台服务器. 关于saltstack更多功能本 ...

  6. python函数----名称空间和作用域

    一 名称空间 名称空间即存放名字与对象映射/绑定关系的地方. 对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系. ​在程序执行 ...

  7. 安卓mbn文件丢失,无法搜索移动信号,工程模式mbn乱改,不用QPST烧录怎样恢复?超简单!

    没有root,工程模式乱改mbn配置选项,导致mbn配置丢失,无法搜索移动网络. 重启若干次改配置都无效,清空网络设置无效,恢复出厂无效,recovery三清无效, 不太想拆机root麻烦,QPST配 ...

  8. 用python做youtube自动化下载器 代码

    目录 项目地址 思路 流程 1. post i. 先把post中的headers格式化 ii.然后把参数也格式化 iii. 最后再执行requests库的post请求 iv. 封装成一个函数 2. 调 ...

  9. LeetCode108 将有序数组转为二叉搜索树

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  10. 【C++】《Effective C++》第二章

    第二章 构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 默认函数 一般情况下,编译器会为类默认合成以下函数:default构造函数.copy构造函数.non-virtual析构函数. ...