Mybatis动态sql标签forEach、if、where、trim、set

1: 标签

接口中的方法

     /**
     * select Books by Books ID
     * @param ids list from books'id 
     * @return Bood's List 
     */
    List selectByIds(List ids);



Mapper.xml中的配置



/*注意这里面的separatpr属性,可以试一试改成or,当然这样where条件和里面的循环出来的内容就需要适当改一改了,自行脑补*/
/*collection需要注意,如果传入的是一个对象,而该对象中有一个自定义的List ids 那么这里可以直接些ids,而如果传入的直接是一个List 则此处需要写list*/

各个参数说明

Mybatis动态sql标签forEach、if、where、trim、set_第1张图片

2:标签

接口中的代码

    /**
     * vague selcet Books
     * @param book select's condition
     * @return eligible books in list
     */
    List likeSelect(Book book);


Mapper中

    

/*cancat(a,b,c,...)mysql的cancat()函数,自问度娘*/
/*
    标签的作用
        首先它会在当前sql后面拼接 where 然后
        当上面的第一个 if 条件 bookName!=null and bookName!=''成立时。
        本应该 直接继续拼接and bookName like ‘%bookName%’,
        但where标签发现这是第一个条件,所以就会去掉add
        而直接拼接bookName like ‘%bookName%’
*/

3:标签

请 参考 上面的 标签

4:标签

https://www.cnblogs.com/duanxz/p/3862315.html

请参考上面这位同学的,比我知道的详细

5:标签

就以上面标签里面的那个例子讲

   

标签有四个属性
    prefix:from book 后面 要加的内容
    prefixOverrides:from book 后面 要去掉的内容
    本例子中,假设第一个if条件成立,则sql语句本应该是 from book and bookName like...
    但在trim标签的作用下,就会在book后面 去掉add 并且加上where 
    从而变成了from book where bookName like...

    suffix:表示在标签包裹内同的sql语句最后的部分 需要 加上 的内容
    suffixOverrides:表示在标签包裹内同的sql语句最后的部分 需要 去掉 的内容

6:标签

如果只是使用set标签,那么SQL语句就会是硬编码。需要结合trim标签使用。或者完全用标签代替。

如何代替,自行脑补。思考有助于长寿……

其它 还有啥?想起来再补

 

你可能感兴趣的:(java,mybatis,mybatis动态sql标签)