您的位置:首页 > 数据库

mybatis中SQL块使用/动态条件查询

2016-10-20 18:06 561 查看
<!-- 字段 -->
<sql id="field">
`id`,
`username`,
`password`
</sql>

使用:
<include refid="field"/> <pre name="code" class="java"><!-- 通过一个ID搜索 -->
<select id="getById" parameterType="int" resultType="UserPojo">
SELECT <include refid="field"/> FROM user WHERE id = #{id}
</select>


或者 

<sql id="dynamicCondition">
<if test="templateType != null"> AND r.template_type=#{templateType} </if>
<if test="roleType != null"> AND r.role_type=#{roleType}  </if>
<if test="trialId != null"> AND r.trial_id= #{trialId}  </if>
<if test="status != null"> AND r.status = #{status}  </if>
<if test="typeId != null"> AND r.type_id= #{typeId}  </if>
<if test="keyWords != null"> AND r.org_name like #{keyWords}  </if>
<if test="schoolType != null"> AND r.school_type = #{schoolType} </if>
<if test="orgId != null "> AND r.org_id = #{orgId} </if>
<if test="orgIdList != null "> AND r.org_id in (${orgIdList}) </if>
</sql>


使用:

<select id="getCountyListByCityId" resultMap="reportVOMap" parameterType="map">
select DISTINCT(r.org_id) ,r.org_name,r.view_url from tarea t
INNER JOIN report_divided_html_liususu r
on t.id = r.org_id
where t.pid  = #{areaId}
<include refid="dynamicCondition" />
</select>


或者:

<sql id="dynamicWhere">
<where>
<if test="@Ognl@isNotEmpty(id)"> AND id  =#{id} </if>
<if test="@Ognl@isNotEmpty(orgId)"> AND org_id  = #{orgId}  </if>
<if test="@Ognl@isNotEmpty(orgName)"> AND org_name  LIKE #{orgName}  </if>
<if test="@Ognl@isNotEmpty(templateType)"> AND template_type  = #{templateType}  </if>
<if test="@Ognl@isNotEmpty(roleType)"> AND role_type  = #{roleType}  </if>
<if test="@Ognl@isNotEmpty(trialId)"> AND trial_id  = #{trialId}  </if>
<if test="@Ognl@isNotEmpty(typeId)"> AND type_id  LIKE #{typeId}  </if>
<if test="@Ognl@isNotEmpty(viewUrl)"> AND view_url  LIKE #{viewUrl}  </if>
<if test="@Ognl@isNotEmpty(reportName)"> AND report_name  LIKE #{reportName}  </if>
<if test="@Ognl@isNotEmpty(provinceId)"> AND province_id  =#{provinceId} </if>
<if test="@Ognl@isNotEmpty(provinceName)"> AND province_name  = #{provinceName}  </if>
<if test="@Ognl@isNotEmpty(cityId)"> AND city_id  =#{cityId} </if>
<if test="@Ognl@isNotEmpty(cityName)"> AND city_name  LIKE #{cityName}  </if>
<if test="@Ognl@isNotEmpty(countyId)"> AND county_id  =#{countyId} </if>
<if test="@Ognl@isNotEmpty(countyName)"> AND county_name  LIKE #{countyName}  </if>
<if test="@Ognl@isNotEmpty(generatedTime)"> AND generated_time  =#{generatedTime} </if>
<if test="@Ognl@isNotEmpty(begingeneratedTime)"> AND generated_time  >=#{begingeneratedTime,jdbcType=TIMESTAMP} </if>
<if test="@Ognl@isNotEmpty(endgeneratedTime)"> AND generated_time <![CDATA[ <#{endgeneratedTime,jdbcType=TIMESTAMP}]]> </if>
<if test="@Ognl@isNotEmpty(generatedUserId)"> AND generated_user_id  =#{generatedUserId} </if>
<if test="@Ognl@isNotEmpty(generatedUserName)"> AND generated_user_name  LIKE #{generatedUserName}  </if>
<if test="@Ognl@isNotEmpty(releaseTime)"> AND release_time  =#{releaseTime} </if>
<if test="@Ognl@isNotEmpty(beginreleaseTime)"> AND release_time  >=#{beginreleaseTime,jdbcType=TIMESTAMP} </if>
<if test="@Ognl@isNotEmpty(endreleaseTime)"> AND release_time <![CDATA[ <#{endreleaseTime,jdbcType=TIMESTAMP}]]> </if>
<if test="@Ognl@isNotEmpty(releaseUserId)"> AND release_user_id  =#{releaseUserId} </if>
<if test="@Ognl@isNotEmpty(releaseUserName)"> AND release_user_name  LIKE #{releaseUserName}  </if>
<if test="@Ognl@isNotEmpty(status)"> AND status  =#{status} </if>

</where>
</sql>


使用:

<select id="queryListCount" parameterType="map" resultType="Integer">
select count(id) from report_divided_html
<include refid="dynamicWhere" />
</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis