技术文档

SpringBoot整合MybatisPlus实战动态SQL

2020-12-03  本文已影响0人  Java旺

MyBatis的动态SQL是最令人喜欢的功能

在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础!

SpringBoot整合MybatisPlus实战动态SQL

if 标签

下面每个标签都会有对应的方法,但下文没有一一写出,现参考如下

List<Test> selectByExample(TestExample example);
List<Test> selectByTestSelective(Test example);
List<Test> selectByIdOrUserName(Test example);
List<Test> selectByTestSelectiveWhereTag(Test example);
List<Test> selectByTestIdList(List<Integer> ids);
int insertList(List<Test> students);
int updateTestSetTag(Test example);
int selectSelectiveTrim(Test example);
@RequestMapping(value = "/dongtaiSql")
@ResponseBody
public void dongtaiSql() {
    Test example = new Test();
    example.setUsername("周");
    List<Test> selectByTestSelective = testMapper.selectByTestSelective(example);
    for (Test test : selectByTestSelective) {
        System.out.println(test.getUsername());
    }
}
image.png

【注意】 下文所有的请求都是通过postman发出的。

SpringBoot整合MybatisPlus实战动态SQL

include标签

choose标签 ,配合when ,otherwise 标签使用

choose when otherwise 标签可以帮我们实现 if else 的逻辑。一个 choose 标签至少有一个 when,

最多一个otherwise。

SpringBoot整合MybatisPlus实战动态SQL

找不到 周 ,因为我只有周杰伦或者周杰 。 这个choose和 if 的功能有点类似,但是和if 不同的是choose 有点你有什么我就根据你给的查,而if 则是你传了所有条件,我逐个判断你的条件然后给你查。if 更多适用于表单查询的时候用。而choose 更多的时候。。。其实这两个达到的目的是一样的,我更喜欢用choose.

where 标签

SpringBoot整合MybatisPlus实战动态SQL

foreach 标签

代码

@RequestMapping(value = "/dongtaiSql3")
@ResponseBody
public void dongtaiSql3() {
    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    arrayList.add(6);
    arrayList.add(5);
    List<Test> selectByTestSelective = testMapper.selectByTestIdList(arrayList);
    for (Test test : selectByTestSelective) {
        System.out.println(test.getUsername());
    }
}
SpringBoot整合MybatisPlus实战动态SQL
Test example2 = new Test();
    example2.setUsername("郭富城");
    example2.setGender(1);
    example2.setIp("123232113122");

    Test example3 = new Test();
    example3.setUsername("邱淑贞");
    example3.setGender(0);
    example3.setIp("123232113333");
    ArrayList<Test> arrayList = new ArrayList<Test>();
    arrayList.add(example);
    arrayList.add(example2);
    arrayList.add(example3);

    int selectByTestSelective = testMapper.insertList(arrayList);
    if (selectByTestSelective == 1) {
        System.out.println("批量插入:"+arrayList.size()+"条数据");
    }
} 
SpringBoot整合MybatisPlus实战动态SQL

bind 标签

@RequestMapping(value = "/dongtaiSql5") @ResponseBody public void dongtaiSql5() { Test example = new Test(); example.setUsername("周"); example.setIp("cium"); example.setId(27); int selectByTestSelective = testMapper.updateTestSetTag(example); System.out.println(selectByTestSelective);
} 
SpringBoot整合MybatisPlus实战动态SQL

发现依然可以。 说明这个bind 就是绑定一些变量的 ,nameLike 就代表了username 的模糊搜索,就是如果别的地方用得到它的模糊搜索,拿来用即可。用法是 like 后面直接加上 #{nameLike }。

set 标签

这个标签常用于做修改语句,比如

@RequestMapping(value = "/dongtaiSql5") @ResponseBody public void dongtaiSql5() { Test example = new Test(); example.setUsername("周"); example.setIp("cium"); example.setId(27); int selectByTestSelective = testMapper.updateTestSetTag(example); System.out.println(selectByTestSelective);}
SpringBoot整合MybatisPlus实战动态SQL

trim 标签

SpringBoot整合MybatisPlus实战动态SQL

trim标签各参数的说明

prefix:在trim标签内sql语句加上前缀。
suffix:在trim标签内sql语句加上后缀。
prefixOverrides:指定去除多余的前缀内容
suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。 
SpringBoot整合MybatisPlus实战动态SQL

然而我在配置的时候却遇到了更坑的问题,迟迟得不到解决…欢迎有兴趣的朋友一起交流下解决最后这个问题。

来源:https://www.tuicool.com/articles/36fQn2e

上一篇下一篇

猜你喜欢

热点阅读