知识兔

mybatis-plus集成spring boot使用

32

mybatis-plus是国内的开源项目 简化mybatis的使用和开发  其中通用mapper接口非常好用 有单表所有的增删改查 

只需要自身的mapper接口继承这个接口 然后泛型写要操作的实体类即可

这是mybatis-plus的官网  文档写的还不错  https://mp.baomidou.com/guide/

可以在SSM项目中使用 也可以集成到spring boot  我这里是在spring boot中使用 

首先是maven依赖

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>

这是目前最新版本的依赖,导入了这个之后不需要再导入mybatis的依赖了 因为mybatis-plus里面就包含了mybatis

然后在spring boot 启动类上 加上这个注解@MapperScan("你的mapper接口所在的包名") 这个注解就是扫描指定包名下的所有mapper接口
这个注解其实使用mybatis也要加,扫描到你的mapper接口之后 才能在运行时 给你生成代理类 执行sql语句之类的

然后在spring boot启动类多加一个方法,因为现在肯定是都要使用分页查询功能的,而mybatis本身只有内存分页 就是将所有满足条件的记录查出 然后分页 所以使用mybatis-plus自带的分页插件
这是将mybatis-plus自带的分页插件注入到spring ioc容器中管理
知识兔
1  /**2      * 分页插件3      */4     @Bean5     public PaginationInterceptor paginationInterceptor() {6         PaginationInterceptor paginationInterceptor = new PaginationInterceptor();7         // paginationInterceptor.setLimit(你的最大单页限制数量,默认 500 条,小于 0 如 -1 不受限制);8         return paginationInterceptor;9     }

既然是ORM框架 肯定是操作数据库 那主要就是实体类和dao接口(叫mapper接口也行 很多叫法 习惯叫dao)

先说实体类  mybatis-plus由提供一个类 配置好数据库连接信息等 输入表名就能自动产生实体类 和dao接口

至于类名和属性名会根据你数据库表名或者列名有下划线都会把下一个字母替换成大写  这样也好 不用去配置映射关系了

但是如果你不想这样 想自己指定表名列名的映射关系  也有提供了注解

首先第一个注解 加在类上 指定和这个实体类对应的数据库表名

   指定完表名 还有主键需要指定

 指定完主键 剩下的都是普通属性

 实体类大致就是这样 剩下的 就是dao类  直接自己定义一个接口  然后继承BaseMapper<你要操作的实体类> 就可以 这时候你的接口已经有了对整个类的所有增删改查方法

这些增删改查方法大概有十几个 单看方法名字和要传递的参数也可以看懂 还是比较简单的 

 我这里单独讲一下分页查询

分页查询要是selectPage 这个方法   接收两个参数 第一个参数是要一个IPage这个接口的实现类  其实就是Page  这个是mybatis-plus 提供的分页类

构造方法可以传递要查询第几页 和每页查询几条 如果不传 默认是查询第1页 和每页查询10条

第二个参数就是要Wrapper接口的实现类 这里是查询 所以传 QueryWrapper 这个类 还有一个UpdateWrapper由于修改时 传递条件

QueryWrapper 这个类 里面有很多方法 比如 eq   like    Between 等  参数一般都是数据库列名和值  然后每个方法的返回值也是QueryWrapper  所以可以链式编程

其实这个本质也就是将我们传递的列名和值 进行拼接成条件字符串 

最后这个方法会返回一个IPage接口  里面有几个get方法 可以获得当前页  总页数 总记录数  结果集等  可以强转为Page  这样比较方便 功能更强

如果是多表联合查询  可以选择 在dao接口中 写一个方法 然后使用@select注解 里面写要执行的sql语句 返回值写 List<Map<String,Object>> 

如果是前后端分离项目  后端只响应给前端json文件 那么就不需要处理  直接返回给前端 经过spring MVC的json格式化之后 和你返回实体类格式化没区别

但是如果还是想要转换成一个类来使用  可以单独定义一个类 里面写上要用的属性名  这时候@select注解里面的sql语句的列名就要和这个类属性名一样  

返回值就可以写成List<刚定义的实体类名>  由于列名和属性名对应上了  mybatis-plus 就可以自动帮我们把值封装到对象中

  然后可以在spring boot配置文件中 配置一下打印sql语句 这样还是比较方便调试之类的

#mybatis-plus 控制台打印执行SQL语句
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
我这用得是yml格式的配置文件

基本的使用就这些 还有很多别的插件和功能 我暂时也没有去用到 用到以后再回来更新吧
计算机