美文网首页
动态SQL 选择查询 choose +when+ otherwi

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

作者: 神豪VS勇士赢 | 来源:发表于2018-07-29 11:15 被阅读286次

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

    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

    相关文章

      网友评论

          本文标题:动态SQL 选择查询 choose +when+ otherwi

          本文链接:https://www.haomeiwen.com/subject/nkszmftx.html