动态SQL 选择查询 choose +when+ otherwi

2018-07-29  本文已影响286人  神豪VS勇士赢

选择查询:条件为空时提供默认的查询方式:

Choose(when , otherwise )相当swtich

where 条件
<choose>
<when test=“uName !=null "> uName=#{uName}</when >
<otherwise> uName =“test” </otherwise>
</choose>
使用otherwise一定会让where生效。(这里没有使用where标签)

需求如下:
当我们传入的 uName 不为空的时候, 按照 when 内部条件查询
当我们传入的uName 为空的时候 ,按照otherwise 里面的条件进行查询

<select id="searchMyUserByDefaultByUser" parameterType="com.zyh.pojo.UserInfo" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_user_info
WHERE
<choose>
<when test=" uName != null" >
u_name =#{uName}
</when>
<otherwise>
u_name="111"
</otherwise>

</choose>

</select>

映射文件对应的接口文件代码如下:

List<UserInfo> searchMyUserByDefaultByUser(UserInfo userInfo);

测试代码如下:

@Test
public void testSearchMyUserByDefaultByUser(){
SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
UserInfo userInfo =new UserInfo();
userInfo.setuName(null);
List<UserInfo> userInfos = mapper.searchMyUserByDefaultByUser(userInfo);
for (int i = 0; i < userInfos.size(); i++) {
System.out.println(userInfos.get(i));
}
}

当我们传入的uName 字段为 null 的时候 就会按照 otherwise 里面的 u_name="111" 进行查询。

结果输出如下:


image.png

当我们传入的uName 字段不为null的时候 ,就会按照when 里面的 条件进行查询
结果输出如下:


image.png
上一篇下一篇

猜你喜欢

热点阅读