Mybatis动态SQL

什么是动态SQL:

根据不同的条件生成不同的SQL语句
官方文档地址

IF语句

Mybatis动态SQL_第1张图片

BlogMapper.xml
通过if进行语句的拼接


测试

@Test
    public void queryBlogIfTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        HashMap map = new HashMap();
//        map.put("title","Java如此简单");
        map.put("author","狂神说");

        List blogs = mapper.queryBlogIf(map);
        for (Blog blog : blogs) {
            System.out.println(blog);
        }

        sqlSession.close();
    }

where

在这里插入图片描述上面例子中的mapper.xml变为

 

测试

    @Test
    public void queryBlogIfTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        HashMap map = new HashMap();
//        map.put("title","Java如此简单");
        map.put("author","狂神说");

        List blogs = mapper.queryBlogIf(map);
        for (Blog blog : blogs) {
            System.out.println(blog);
        }

        sqlSession.close();
    }
}

Mybatis动态SQL_第2张图片and被自动去掉
**如果没有给map传入参数
Mybatis动态SQL_第3张图片

choose、when、otherwise

在这里插入图片描述
mapper.xml
有title就按title查,没有title有author就按author查,两者都没有就按views查


测试

    @Test
    public void queryBlogChooseTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        HashMap map = new HashMap();
          map.put("title","Java如此简单");
//        map.put("author","狂神说");
          map.put("views",9999);

        List blogs = mapper.queryBlogChoose(map);
        for (Blog blog : blogs) {
            System.out.println(blog);
        }

        sqlSession.close();
    }

Mybatis动态SQL_第4张图片

set

在这里插入图片描述mapper.xml


        update mybatis.blog
        
            
                title = #{title},
            
            
                author = #{author}
            
        

        where id = #{id}
    

测试

    @Test
    public void updateTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        HashMap map = new HashMap();
          map.put("title","Java如此简单2");
          map.put("author","狂神说");
//          map.put("views",9999);
        map.put("id","7ac18489a06442898f09faf72f5f0bb0");
       mapper.updateBlog(map);


        sqlSession.close();
    }

Mybatis动态SQL_第5张图片

trim、where、set

Mybatis动态SQL_第6张图片

你可能感兴趣的:(Mybatis,sql,java,数据库)