Mybatis動態(tài)SQL幾種元素:
? ? if? ? 判斷語句
? ? chose(when,otherwise)? ? 相當(dāng)于Java中的switch和case? ??
? ? trim(where,set)? ? 輔助元素,用于處理特定的SQL拼接問題溶锭,比如去掉多余的and阳堕、or等
? ? foreach? ? 循環(huán)語句? ? 在in語句等列表條件常用
If使用:
映射文件:
<select id="findUser" parameterType="string" resultMap="userMapper">
????select * from user where id=3
????<if test="name != null and name != ''">
????and name like concat ('%',#{name},'%')
????</if>
</select>
查詢user表苗膝,當(dāng)傳入?yún)?shù)為null或是‘’時双絮,默認(rèn)id=3查詢user蛀柴,否則佣耐,按傳入的參數(shù)進行name的模糊查詢拉一。
接口:
public User findUser(@Param(value = "name") String username);
Main:
//User user = userMapper.findUser("");
//User user = userMapper.findUser("cy");?
chose采盒、when、otherwise元素使用:
<select id="findUser" parameterType="pojo.User" resultMap="userMapper">
????select * from user where 1=1
????<choose>
????????<when test="id != null and id != ''">
????????????AND id = #{id}
????????</when>
????????<when test="name != null and name != ''">
????????????AND name = #{name}
????????</when>
????????<otherwise>
????????????AND age is not null
????????</otherwise>
????</choose>
</select>
多條件進行查詢
tirm蔚润、where磅氨、set元素:
Where使用:
<select id="findUser" parameterType="map" resultMap="userMapper">
????select * from user
????<where>
????????<if test="name != null and name != ''">
????????????and name like concat ('%',#{name},'%')
????????</if>
????????<if test="age != null and age != 0">
????????????and age = #{age}
????????</if>
????</where>
</select>
接口:
public User findUser(Map<String,Object> parameterMap);
main:
Map<String,Object> p =new HashMap<String, Object>();
p.put("name","cy");
p.put("age",32);
User user1 = userMapper.findUser(p);? ?
Trim使用:
????trim用在要去掉一些特殊的字符串,