SpringBoot项目中MybatisPlus的使用(二)

系统管理员 2022-01-29 03:29 391阅读 0赞

本文主要内容:

  • 自动生成代码(新)
  • Wrapper的使用

本文在SpringBoot项目中MybatisPlus的使用一文基础上修改,升级为springboot的2.1.0.RELEASE版本。

一、自动生成代码

1、mysql数据库

在SpringBoot项目中MybatisPlus的使用中已经有了详细的说明,但是在springboot的2.1.0.RELEASE版本下会报错,需要修改以下内容:

  • pom文件中mysql依赖:


    mysql
    mysql-connector-java
  • 修改CodeGenerator中数据源配置(主要是驱动名称变化):

    // 数据源配置

    1. DataSourceConfig dsc = new DataSourceConfig();
    2. dsc.setUrl("jdbc:mysql://localhost:3306/frog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT");
    3. dsc.setDriverName("com.mysql.cj.jdbc.Driver");
    4. dsc.setUsername("root");
    5. dsc.setPassword("123456");
2、orcale数据库

orcale的驱动一直下载不下载,于是从其他渠道复制了一个jar包,需要安装到本地maven仓库。

  • 复制jar包到本机,为了方便我直接放在maven\bin目录下:
    在这里插入图片描述
  • 在bin目录下打开cmd,执行安装命令:

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7-12.1.0.1.jar

  • 打开maven本地仓库查看已经完成:
    在这里插入图片描述

  • 在pom文件中引入:


    com.oracle
    ojdbc7
    12.1.0.1
  • 修改CodeGenerator中数据源配置:

    DataSourceConfig dsc = new DataSourceConfig();

    1. dsc.setUrl("jdbc:oracle:thin:@localhost:1521/frog");
    2. dsc.setDriverName("oracle.jdbc.OracleDriver");
    3. dsc.setUsername("frog");
    4. dsc.setPassword("frog123456");

二、Wrapper的使用(v3.0.1以上)

熟练的使用Wrapper能够减少xml中简单sql语句的重复编写,很大程度上节约了开发时间。例如:

1、全表扫描(参数为null):
  1. @Autowired
  2. private FrogMapper frogMapper;
  3. public void test() {
  4. Integer count = frogMapper.selectCount(null);
  5. }

SELECT COUNT(1) FROM frog

2、WHERE条件:
  1. QueryWrapper<Frog> wrapper = new QueryWrapper<>();
  2. wrapper.eq("id", 1);
  3. wrapper.ge("size", 5.1);
  4. Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? AND size >= ?
Parameters: 1(Integer), 5.1(Double)

下面罗列了常用的where条件(源码中都有注释,可以下载查看):

















































































方法 含义 sql
eq 等于 =
ne 不等于 <>
gt 大于 >
lt 小于 <
ge 大于等于 >=
le 小于等于 <=
between BETWEEN 值1 AND 值2 BETWEEN … AND …
like LIKE ‘%值%’ LIKE
likeLeft LIKE ‘%值’ LIKE ‘%…’
isNull 字段 IS NULL IS NULL
in 字段 IN (value.get(0), value.get(1), …) IN (a,b,…)
orderBy 排序:ORDER BY 字段, … order by
groupBy 分组:GROUP BY 字段, … group by
having HAVING ( sql语句 ) having
3、AND 和 OR

按以上方式组成where条件语句默认都是and逻辑关系,如果是以下条件关系就需要稍作改动。

  • SQL 1:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR size >= ? AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), a%(String)

  1. QueryWrapper<Frog> wrapper = new QueryWrapper<>();
  2. wrapper.eq("id", 1);
  3. wrapper.or();
  4. wrapper.ge("size", 5.1);
  5. wrapper.likeRight("name", "a");
  6. Integer count = frogMapper.selectCount(wrapper);
  • SQL 2:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR ( size >= ? AND name LIKE ? ) AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), b%(String), a%(String)

  1. QueryWrapper<Frog> wrapper = new QueryWrapper<>();
  2. wrapper.eq("id", 1);
  3. wrapper.or(t -> t.ge("size", 5.1).likeRight("name","b"));
  4. wrapper.likeRight("name", "a");
  5. Integer count = frogMapper.selectCount(wrapper);
4、使用apply构造复杂SQL

复杂sql可以使用apply方法拼接,但是不推荐这么写,最好还是写在xml更容易阅读,另外还是sql注入的风险。

  1. QueryWrapper<Frog> wrapper = new QueryWrapper<>();
  2. wrapper.in("color", "red","blue","yellow");
  3. wrapper.apply("size = (select max(size) from frog group by color)");
  4. Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE color IN (?,?,?) AND size = (select max(size) from frog group by color)
Parameters: red(String), blue(String), yellow(String)

5、lambda表达式写法
  1. QueryWrapper<Frog> wrapper = new QueryWrapper<>();
  2. wrapper.lambda().eq(Frog::getColor, "green")
  3. .ge(Frog::getSize, 5.2);
  4. Integer count = frogMapper.selectCount(wrapper);

SELECT COUNT(1) FROM frog WHERE color = ? AND size >= ?
Parameters: green(String), 5.2(Double)

三、总结

本篇主要对mybatisplus代码生成功能中mysql和orcale数据源配置的完善,以及使用wrapper构建简单sql语句常用方法进行总结,因为开发中经常使用,即使简单也值得记录。

发表评论

表情:
评论列表 (有 0 条评论,391人围观)

还没有评论,来说两句吧...

相关阅读