mybatis---动态SQL

if标签

    <!-- 根据输入的参数进行查询 -->
    <select id="findUserByCondition"  resultMap="userMap" parameterType="user">
        select * from user where 1=1
        <if test="userName != null">
          and  username = #{userName}
        </if>
        <if test="userSex != null">
            and sex =#{userSex}
        </if>
    </select>

 

where标签(有了之后,就不需要 where 1 = 1 了)

  <select id="findUserByCondition"  resultMap="userMap" parameterType="user">
        select * from user
        <where>
        <if test="userName != null">
            and  username = #{userName}
        </if>
        <if test="userSex != null">
            and sex =#{userSex}
        </if>
        </where>
    </select>

 

foreach标签的使用

实体类

public class QueryVo {
    private List<Integer> ids;
    private User user;

接口

    /**
     * 根据queryvo中存在的的集合信息,查询用户
     * @return
     */
    List<User> findUserInIds(QueryVo vo);

映射配置文件

<!--根据queryvo中的集合查询用户-->
    <select id="findUserInIds" resultMap="userMap" parameterType="queryvo">
        select * from user
        <where>
            <if test="ids != null and ids.size()>0">
            <!--collention:查询的集合
            open:开始
            close:结束
            item:别名,必须和下面的id一致
            separator:以什么符号分割
            -->
            <foreach collection="ids" open="and id in (" close=")" item="id" separator=",">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>

 

测试类

    /**
     * 测试foreach标签的使用
     */
    @Test
    public void testFindByIds(){
        QueryVo vo = new QueryVo();

        List<Integer> list = new ArrayList<Integer>();
        list.add(41);
        list.add(46);
        list.add(45);
        list.add(48);
        vo.setIds(list);

        List<User> users = userDao.findUserInIds(vo);
        for(User user : users){
            System.out.println(user);
        }
    }

 

posted @ 2021-11-09 14:58  江南0o0  阅读(31)  评论(0)    收藏  举报