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

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

Choose(when , otherwise )相当swtich

where 条件

uName=#{uName}
uName =“test”

使用otherwise一定会让where生效。(这里没有使用where标签)

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

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

List 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 userInfos = mapper.searchMyUserByDefaultByUser(userInfo);
for (int i = 0; i < userInfos.size(); i++) {
System.out.println(userInfos.get(i));
}
}

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

结果输出如下:


动态SQL 选择查询 choose +when+ otherwise_第1张图片
image.png

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


动态SQL 选择查询 choose +when+ otherwise_第2张图片
image.png

你可能感兴趣的:(动态SQL 选择查询 choose +when+ otherwise)