mybatis(四)MyBatis的動態sql語句以及ResultMap和ResultType在使用中的區別


1. 動態sql語句.

1.1 if.

<if test=”name!=null”>

    

</if>

 

1.2 Where: sql語句的開頭加上where.去除頭部為and or開頭。

 <where>

     <if test=””></if>

     <if test=””></if>

 </where>

 

1.3 Set: sql語句前添加set 並且會把sql語句中最后的逗號去除。

 <set>

<if test=””></if>

<if test=””></if>

 

</set>

 

1.4 Trim

 <trim prefix=”前綴” prefixoverrides=”去除的前綴”  suffix=”后綴” suffixoverrides=”去除后綴”>

      <if test=””></if>

<if test=””></if>

 

 </trim>

 

1.5 choose+when+otherwise

1.6 sql片段。

 

引用:

 <select id="selectAll"  resultMap="BaseResultMap">
    select 
    <include refid="usercolumns" />
    from users
  </select>

 

1.7 foreach 標簽遍歷。

刪除id=[1,2,3,5,7,9]

 

 具體查看:https://www.cnblogs.com/ysocean/p/7289529.html#_label0(詳細介紹)

 模糊查詢   like concat('%','某個字','%')

 

 

 

ResultMap和ResultType在使用中的區別

 

在使用mybatis進行數據庫連接操作時對於SQL語句返回結果的處理通常有兩種方式,一種就是resultType另一種就是resultMap,下面說下我對這兩者的認識和理解

resultType:當使用resultType做SQL語句返回結果類型處理時,對於SQL語句查詢出的字段在相應的pojo中必須有和它相同的字段對應,而resultType中的內容就是pojo在本項目中的位置。

因此對於單表查詢的話用resultType是最合適的。但是,如果在寫pojo時,不想用數據庫表中定義的字段名稱,也是可以使用resultMap進行處理對應的。多表連接查詢時,若是一對一的連接查詢,那么需要新建一個pojo,pojo中包括兩個表中需要查詢出的所有的字段,這個地方的處理方式通常為創建一個繼承一個表字段的pojo,再在里面添加另外一個表內需要查詢出的字段即可。若是一對多查詢時,若是使用內連接查詢,則很可能出現查詢出的字段有重復。使用雙重for循環嵌套處理即可。

 

resultMap:當使用resultMap做SQL語句返回結果類型處理時,通常需要在mapper.xml中定義resultMap進行pojo和相應表字段的對應。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM