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和相應表字段的對應。