国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

Mybatis 中 Oracle 的拼接模糊查詢(xún)及用法詳解

2024-07-14 08:41:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、結(jié)論

這里先給大家看一下結(jié)論

Oracle 中,拼接模糊查詢(xún)的正確寫(xiě)法

 SELECT A.USER_ID,      A.USER_NAME    FROM USER A      AND A.USER_NAME like concat(concat('%','w'),'%')      或者      AND A.USER_NAME like '%' || 'w' || '%'

Mybatis 中,拼接模糊查詢(xún)的正確寫(xiě)法

 <select id="selectByName" resultMap="BaseResultMap">    SELECT A.USER_ID,      A.USER_NAME    FROM T_BASE_USER_INFO A      <if test="userName != null">        AND A.USER_NAME like '%' || #{userName} || '%'      </if>      或者      <if test="userName != null">        AND A.USER_NAME like concat(concat('%','${userName}'),'%')      </if>  </select>

注意 Mybatis 中,拼接模糊查詢(xún)的用法

,是將傳入的值當(dāng)做字符串的形式。所以拼接的時(shí)候 #{userName} 默認(rèn)自帶引號(hào)。例如: ${userName} 直接轉(zhuǎn)為 ‘zhen'。

,是將傳入的數(shù)據(jù)直接顯示生成sql語(yǔ)句。所以拼接的時(shí)候 
,是將傳入的數(shù)據(jù)直接顯示生成sql語(yǔ)句。所以拼接的時(shí)候
{userName} 沒(méi)有默認(rèn)引號(hào)。例如:${userName} 直接轉(zhuǎn)為 zhen 。

二、技巧:

剛開(kāi)始寫(xiě)的時(shí)候一直報(bào)錯(cuò),報(bào)錯(cuò)信息是這樣的:

    "message": "Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='userName', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: 無(wú)效的列索引",

我的寫(xiě)法是這樣的:           

 <if test="_parameter != null">--         AND A.USER_NAME like CONCAT('%','#{userName}','%')          AND A.USER_NAME = #{userName}        </if><!--        <if test="userType != null">          AND A.USER_TYPE = #{userType}        </if>        <if test="mobilePhoneNo != null">          AND A.MOBILE_PHONE_NO like CONCAT('%','#{mobilePhoneNo}','%')        </if>        <if test="roleId != null">          AND B.ROLE_ID = #{roleId}                </if>-->

后來(lái)我徹底凌亂了,于是就從頭開(kāi)始寫(xiě),結(jié)果就好了。

小結(jié):

出現(xiàn)的報(bào)錯(cuò)可能跟我之前寫(xiě)了太多的if 判斷語(yǔ)句有關(guān),于是先寫(xiě)一個(gè)簡(jiǎn)單的          

 <if test="userName != null">        AND A.USER_NAME like '%' || #{userName} || '%'      </if>

這個(gè)可以執(zhí)行,其他再有什么條件加進(jìn)來(lái),稍微修改之后,都可以正常運(yùn)行。          

 <if test="userName != null">        AND A.USER_NAME like concat(concat('%','${userName}'),'%')      </if>      <if test="userType != null">        AND A.USER_TYPE = #{userType}      </if>      <if test="mobilePhoneNo != null">        AND A.MOBILE_PHONE_NO like '%' || #{mobilePhoneNo} || '%'      </if>      <if test="baseRoleInfo.roleId != null">        AND B.ROLE_ID = #{baseRoleInfo.roleId}      </if>

總結(jié)

以上所述是小編給大家介紹的Mybatis 中 Oracle 的拼接模糊查詢(xún),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桃园县| 绥德县| 邳州市| 凤冈县| 玉龙| 萍乡市| 铅山县| 大方县| 三门峡市| 凤台县| 什邡市| 巴马| 邢台县| 闽清县| 长岛县| 定结县| 体育| 新源县| 赫章县| 龙口市| 舒城县| 深水埗区| 马关县| 慈溪市| 长寿区| 阿巴嘎旗| 青海省| 利津县| 甘洛县| 咸阳市| 临桂县| 永德县| 剑川县| 凭祥市| 城口县| 行唐县| 唐河县| 迭部县| 吉木乃县| 韶山市| 嘉黎县|