mybatis动态sql

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gc">
	<!-- 基础查询 -->
	<select id="query" parameterType="Map" resultMap="gcMap.subplateMap">
	SELECT PL.PLID,PL.PLNAME,PL.PLTYPE,PL.BRANCH,PL.PLICON,PL.PLFILE,
	(SELECT ORG_CHINA_NAME FROM BMC_BRANCH WHERE BUSINESS_ORG = PL.BRANCH) BRANCHCHN,
	(SELECT CODE_TYPE_DESC FROM CODE_STRING WHERE TRIM(CODE_TYPE) = 'plType' AND CODE_VALUE = PL.PLTYPE) PLTYPECHN,
	(SELECT CODE_TYPE_DESC FROM CODE_STRING WHERE TRIM(CODE_TYPE) = 'plStatus' AND CODE_VALUE = PL.PLSTATUS) PLSTATUSCHN,
	PL.DESCRIPTION,PL.PLSTATUS,PL.CREATEUSERID,PL.CREATEUSERNAME,PL.CREATEUSERDATE,
	PL.LASTMODIFYUSERID,PL.LASTMODIFYUSERNAME,PL.LASTMODIFYTIME,
	PL.PUBLISHUSERID,PL.PUBLISHUSERNAME,PL.PUBLISHTIME
	FROM (
	SELECT ROWNUM AS ROWNO,PO.*
	FROM	(
		SELECT P.PLID,P.PLNAME,P.PLTYPE,P.BRANCH,P.PLICON,P.PLFILE,P.DESCRIPTION,P.PLSTATUS,
	    		O.CREATEUSERID,O.CREATEUSERNAME, TO_CHAR(O.CREATEUSERDATE,'YYYY-MM-DD HH24:MI:SS') CREATEUSERDATE, 
	    		O.LASTMODIFYUSERID,O.LASTMODIFYUSERNAME, TO_CHAR(O.LASTMODIFYTIME,'YYYY-MM-DD HH24:MI:SS') LASTMODIFYTIME, 
	    		O.PUBLISHUSERID,O.PUBLISHUSERNAME, TO_CHAR(O.PUBLISHTIME,'YYYY-MM-DD') PUBLISHTIME 
	    FROM BMC_SUBPLATE P LEFT JOIN BMC_SUBOPERATER O 
    	ON P.PLID = O.PLID 
    	WHERE 1=1
    	<!-- 以下配置是根据查询条件增添不同的sql -->
    	<if test="branch != null and branch != ''">
    	AND P.BRANCH = #{branch}
    	</if>
    	<if test="branchs != null and branchs != ''">
    	AND P.BRANCH = #{branchs}
    	</if>
    	<if test="plName != null and plName != ''">
    	AND P.PLNAME LIKE '%'||#{plName}||'%'
    	</if>
    	<if test="plType != null and plType != ''">
    	AND P.PLTYPE = #{plType}
    	</if>
    	<if test="plStatus != null and plStatus != ''">
    	AND P.PLSTATUS = #{plStatus}
    	</if>
    	<if test="createBeginDate != null and createBeginDate != ''">
    	AND O.CREATEUSERDATE >= TO_DATE(#{createBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="createEndDate != null and createEndDate != ''">
    	AND O.CREATEUSERDATE <= (TO_DATE(#{createEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="lastModifyBeginDate != null and lastModifyBeginDate != ''">
    	AND O.LASTMODIFYTIME >= TO_DATE(#{lastModifyBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="lastModifyEndDate != null and lastModifyEndDate != ''">
    	AND O.LASTMODIFYTIME <= (TO_DATE(#{lastModifyEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="publishBeginDate != null and publishBeginDate != ''">
    	AND O.PUBLISHTIME >= TO_DATE(#{publishBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="publishEndDate != null and publishEndDate != ''">
    	AND O.PUBLISHTIME <= (TO_DATE(#{publishEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="createUserID != null and createUserID != ''">
    	AND O.CREATEUSERID = #{createUserID}
    	</if>
    	<if test="createUserName != null and createUserName != ''">
    	AND O.CREATEUSERNAME = #{createUserName}
    	</if>
    	<if test="lastModifyUserID != null and lastModifyUserID != ''">
    	AND O.LASTMODIFYUSERID = #{lastModifyUserID}
    	</if>
    	<if test="lastModifyUserName != null and lastModifyUserName != ''">
    	AND O.LASTMODIFYUSERNAME = #{lastModifyUserName}
    	</if>
    	<if test="publishUserID != null and publishUserID != ''">
    	AND O.PUBLISHUSERID = #{publishUserID}
    	</if>
    	<if test="publishUserName != null and publishUserName != ''">
    	AND O.PUBLISHUSERNAME = #{publishUserName}
    	</if>
    	ORDER BY O.CREATEUSERDATE DESC,P.PLNAME ASC 		
		) PO
	WHERE ROWNUM <= #{endSet}
	) PL
	WHERE PL.ROWNO >= #{beginSet}
	</select>
	<!-- 分类码查询 -->
	<select id="codeListByCode" parameterType="CodeString" resultType="CodeString">
		SELECT TRIM(C.CODE_TYPE),C.CODE_VALUE,C.CODE_TYPE_DESC,C.CODE_DESC,C.CODE_FLAG
		FROM CODE_STRING C
		WHERE TRIM(C.CODE_TYPE) = #{code_type}
	</select>
	<!-- 记录数查询 -->
	<select id="queryCount" parameterType="Map" resultType="int">
			SELECT COUNT(*)
	    FROM BMC_SUBPLATE P LEFT JOIN BMC_SUBOPERATER O 
    	ON P.PLID = O.PLID 
    	WHERE 1=1
    	<!-- 以下配置是根据查询条件增添不同的sql -->
    	<if test="branch != null and branch != ''">
    	AND P.BRANCH = #{branch}
    	</if>
    	<if test="branchs != null and branchs != ''">
    	AND P.BRANCH = #{branchs}
    	</if>
    	<if test="plName != null and plName != ''">
    	AND P.PLNAME LIKE '%'||#{plName}||'%'
    	</if>
    	<if test="plType != null and plType != ''">
    	AND P.PLTYPE = #{plType}
    	</if>
    	<if test="plStatus != null and plStatus != ''">
    	AND P.PLSTATUS = #{plStatus}
    	</if>
    	<if test="createBeginDate != null and createBeginDate != ''">
    	AND O.CREATEUSERDATE >= TO_DATE(#{createBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="createEndDate != null and createEndDate != ''">
    	AND O.CREATEUSERDATE <= (TO_DATE(#{createEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="lastModifyBeginDate != null and lastModifyBeginDate != ''">
    	AND O.LASTMODIFYTIME >= TO_DATE(#{lastModifyBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="lastModifyEndDate != null and lastModifyEndDate != ''">
    	AND O.LASTMODIFYTIME <= (TO_DATE(#{lastModifyEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="publishBeginDate != null and publishBeginDate != ''">
    	AND O.PUBLISHTIME >= TO_DATE(#{publishBeginDate},'YYYY-MM-DD')
    	</if>
    	<if test="publishEndDate != null and publishEndDate != ''">
    	AND O.PUBLISHTIME <= (TO_DATE(#{publishEndDate},'YYYY-MM-DD')+1)
    	</if>
    	<if test="createUserID != null and createUserID != ''">
    	AND O.CREATEUSERID = #{createUserID}
    	</if>
    	<if test="createUserName != null and createUserName != ''">
    	AND O.CREATEUSERNAME = #{createUserName}
    	</if>
    	<if test="lastModifyUserID != null and lastModifyUserID != ''">
    	AND O.LASTMODIFYUSERID = #{lastModifyUserID}
    	</if>
    	<if test="lastModifyUserName != null and lastModifyUserName != ''">
    	AND O.LASTMODIFYUSERNAME = #{lastModifyUserName}
    	</if>
    	<if test="publishUserID != null and publishUserID != ''">
    	AND O.PUBLISHUSERID = #{publishUserID}
    	</if>
    	<if test="publishUserName != null and publishUserName != ''">
    	AND O.PUBLISHUSERNAME = #{publishUserName}
    	</if>
	</select>
	<!-- 直属机构查询 -->
	<select id="branchs" resultType="Branch">
		SELECT B.BUSINESS_ORG,B.ORG_CHINA_NAME
		FROM BMC_BRANCH B
		WHERE B.ORG_MANAGE_LEV = 1
	</select>
	<!-- 查询时检查用户是否存在 -->
	<select id="checkUser" parameterType="Map" resultType="int">
		
		SELECT COUNT(*)
		FROM BMC_SUBOPERATER
		WHERE 1=1
		<if test="createUserName != null and createUserName != ''">
		AND CREATEUSERNAME = #{createUserName}
		</if>
		<if test="createUserID != null and createUserID != ''">
		AND CREATEUSERID = #{createUserID}
		</if>
		<if test="lastModifyUserID != null and lastModifyUserID != ''">
		AND LASTMODIFYUSERID = #{lastModifyUserID}
		</if>
		<if test="lastModifyUserName != null and lastModifyUserName != ''">
		AND LASTMODIFYUSERNAME = #{lastModifyUserName}
		</if>
		<if test="publishUserID != null and publishUserID != ''">
		AND PUBLISHUSERID = #{publishUserID}
		</if>
		<if test="publishUserName != null and publishUserName != ''">
		AND PUBLISHUSERNAME = #{publishUserName}
		</if>
	</select>
</mapper>


 另外

LIKE 语句         %匹配一或多个字符    _匹配一个字符  

CODE_VALUE    LIKE   '01%'       表示搜索CODE_VALUE以01开头的记录

但在mybatis的配置文件中,不能这样直接写, 要想实现动态  必须用到CONCAT函数 把两个参数连接成一个字符串

 

 

如    CODE_VALUE  LIKE  CONCAT(#{code_value},'%')

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值