myBatis动态sql if when choose set


动态sql if when choose set

本质就是在xml进行sql语句的拼接

在blogMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>



    
        insert into mybatis.blog(id, title, author, create_time, views) value (#{id},#{title}, #{author}, #{createTime}, #{views});
    

    
    

    
    

    
        update myBatis.blog
        
            
                title=#{title},
            
            
                author=#{author},
            
            
                views=#{views}
            
        
        where id=#{id}

    


接口

package dao;

import pojo.Blog;

import java.util.List;
import java.util.Map;

public interface BlogMapper {
    int addBlog(Blog blog);

//if查询,全部if判断
    List QueryBlog(Map map);


    //when、choose查询,只选择choose条件的其中一个,其他无效
    List QueryChooseBlog(Map map);


    //set 用于update语句 update table set
    int updateSetBlog(Map map);

测试

import dao.BlogMapper;
import org.apache.ibatis.session.SqlSession;
import pojo.Blog;
import pojo.IDtiles;
import utils.myBatisUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    @org.junit.Test
    public void addBlog() {
        //添加用户
        SqlSession sqlSession = myBatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Blog blog = new Blog();
        blog.setId(IDtiles.getBlogID());
        blog.setAuthor("作者1");
        blog.setTitle("标题1");
        blog.setViews(99);
        blog.setCreateTime(new Date());
        mapper.addBlog(blog);


        blog.setId(IDtiles.getBlogID());
        blog.setTitle("标题2");
        mapper.addBlog(blog);


        blog.setId(IDtiles.getBlogID());
        blog.setTitle("标题3");
        mapper.addBlog(blog);

        blog.setId(IDtiles.getBlogID());
        blog.setTitle("标题4");
        mapper.addBlog(blog);

        sqlSession.commit();
        sqlSession.close();
    }

    @org.junit.Test
    public void QueryBlog() {
        //if某字段查询
        SqlSession sqlSession = myBatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Map map = new HashMap<>();
        map.put("title","标题1");
        map.put("author","作者1");

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

        sqlSession.close();
    }

    @org.junit.Test
    public void QueryChooseBlog() {
        //choose  when某字段查询
        SqlSession sqlSession = myBatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Map map = new HashMap<>();
       //只选择一个条件查询,顺序以xml文件为准
        map.put("title","标题1");
        map.put("author","作者1");

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


    @org.junit.Test
    public void updateSetBlog() {
        //choose  when某字段查询
        SqlSession sqlSession = myBatisUtils.getSqlSession();
        BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

        Map map = new HashMap<>();
        //只选择一个条件查询,顺序以xml文件为准
        map.put("title","标题2");
        map.put("id","22aa25b5932947f788bada74516bfb3d");

        int blogs = mapper.updateSetBlog(map);
        System.out.println(blogs);
        sqlSession.close();
    }
}