mybatis-plus是国内的开源项目 简化mybatis的使用和开发 其中通用mapper接口非常好用 有单表所有的增删改查
只需要自身的mapper接口继承这个接口 然后泛型写要操作的实体类即可
这是mybatis-plus的官网 文档写的还不错 https://mp.baomidou.com/guide/
可以在SSM项目中使用 也可以集成到spring boot 我这里是在spring boot中使用
首先是maven依赖
com.baomidou
mybatis-plus-boot-starter
3.2.0
这是目前最新版本的依赖,导入了这个之后不需要再导入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 @Bean 5 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接口
至于类名和属性名会根据你数据库表名或者列名有下划线都会把下一个字母替换成大写 这样也好 不用去配置映射关系了
但是如果你不想这样 想自己指定表名列名的映射关系 也有提供了注解
首先第一个注解 加在类上 指定和这个实体类对应的数据库表名
指定完表名 还有主键需要指定,注解这里有一点需要注意 默认给你设置的注解类型是ID_WORKER 如果你要插入的实体类对象主键属性为空
他会自动给你创建一个十几位长的唯一ID 如果你主键属性的类型不是long 是int啥的 就会报错 所以要改成long 对应数据库也要改成 bigint
如果你不想使用他给你生成的 那么把主键类型设置为AUTO 就是数据库自增 他不会进行处理
指定完主键 剩下的都是普通属性
实体类大致就是这样 剩下的 就是dao类 直接自己定义一个接口 然后继承BaseMapper<你要操作的实体类> 就可以 这时候你的接口已经有了对整个类的所有增删改查方法
这些增删改查方法大概有十几个 单看方法名字和要传递的参数也可以看懂 还是比较简单的
我这里单独讲一下分页查询
分页查询要是selectPage 这个方法 接收两个参数 第一个参数是要一个IPage这个接口的实现类 其实就是Page 这个是mybatis-plus 提供的分页类
构造方法可以传递要查询第几页 和每页查询几条 如果不传 默认是查询第1页 和每页查询10条
第二个参数就是要Wrapper接口的实现类 这里是查询 所以传 QueryWrapper 这个类 还有一个UpdateWrapper由于修改时 传递条件
QueryWrapper 这个类 里面有很多方法 比如 eq like Between 等 参数一般都是数据库列名和值 然后每个方法的返回值也是QueryWrapper 所以可以链式编程
其实这个本质也就是将我们传递的列名和值 进行拼接成条件字符串
最后这个方法会返回一个IPage接口 里面有几个get方法 可以获得当前页 总页数 总记录数 结果集等 可以强转为Page 这样比较方便 功能更强
如果是多表联合查询 可以选择 在dao接口中 写一个方法 然后使用@select注解 里面写要执行的sql语句 返回值写 List
如果是前后端分离项目 后端只响应给前端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格式的配置文件
基本的使用就这些 还有很多别的插件和功能 我暂时也没有去用到 用到以后再回来更新吧