MyBatis Plus是一个基于MyBatis的增强工具库,它简化了在使用MyBatis时的开发流程,并提供了更多的便利功能。MyBatis Plus提供了一些常用的功能,比如自动生成SQL、分页插件、通用Mapper等,可以帮助开发人员更快速地进行数据库操作。
1.定义实体类
MyBatis Plus提供了一些常用的功能,比如自动生成SQL。在数据层的接口中,可以帮助我们自动生成 sql 语句,所以实体类的名字,要与数据库中表的名字相同,这样自动生成的 sql 语句才知道查询哪个表
如果定义的实体类的名字与数据库中表名不相同,则可以用注解来解决
在实体类的上方加上该注解,注解里写数据库中的表名,同样也可以匹配
那如果是实体类中定义的属性名与数据库表中的字段名不一致的话,也可以通过注解 解决
在属性上方加上该注解,注解里写数据库表中的字段名,同样也可以匹配
2.定义数据层接口
在数据层接口中,让该接口继承了 BaseMapper<> ,继承这个之后,我们就不用在自己编写 sql 语句了,而是可以直接使用 BookDao 接口调用相应的方法。而BaseMapper<Book> 括号里面的参数,就是我们定义的实体类的名字
别忘记加上注解,把该接口作为Bean 管理起来
3.测试接口方法
在测试类中,注入接口
虽然没有在数据层接口里面写 sql 语句,但是因为接口继承了 BaseMapper<>,所以已经替我们编写好了 sql 语句,直接用注入进来的 bookDao 对象,调用对应的 sql 语句方法
4.分页查询
4.1定义分页查询过滤器
要想进行分页查询,首先要定义一个 MybatisPlus 的过滤器,在过滤器里面,调用
addInnerInterceptor()方法
增加一个分页的过滤器
4.2测试分页功能
定义一个IPage 对象,用来设置每页放多少行数据,从而把数据分成多少页
new Page(2,3);
第一个参数是当前的页码值,第二个参数是每页多少行数据
然后我们可以用 page 对象,调用相应的方法,查询一些详细信息
5. 按条件查询
5.1 查询方式
5.1.1普通查询
定义一个 QueryWrapper 对象,设置该对象满足的条件
查询图书数量小于20的数据
5.1.2 lambda 格式查询
查询图书数量大于20并且在20~40之间的数据
lt 表示<,le表示<=,gt表示>,ge表示>=
5.2 查询投影
select 用于查询指定的字段,groupBy 是分组
查询图书总数量、类型字段,在按类型进行分组
结果:
5.3 eq匹配
eq匹配经常用于用户登录在,用来匹配数据库表中是否存在我们所输入的条件的数据
比如数据库表中查询名字是笑猫并且类型是童话的数据
5.4 模糊查询
like 表示模糊查询
查询类型是小说或者童话的数据
likeleft 表示左模糊,也就是百分号在左边,比如 %王,意思是查询所有名字的最后一个字是“王”的数据
likeright 表示右模糊,也就是百分号在右边,比如 笑%,意思是查询所有名字的第一个字是“笑”的数据
5.5 排序
orderBy 表示排序,排序有升序和降序
比如按照 number 升序
6. 查询条件为 null 处理
我们查询图书数量时,可能设置的条件是:number <100、number >20、30< number <80 等等,比如 30< number <80 的条件中有一个上限,一个下限。而 number <100 的条件中只有一个上限,而下限为 null ,所以要对 null 值进行处理
6.1 定义一个查询实体类
让其继承图书实体类,另外再添加一个属性
6.2 测试
假设 number 和 number2 是前端页面中传递过来的图书数量的上限和下限
然后我们在设置条件的时候,先判断传递过来的上限或者下限是否不为空,如果不为空,则执行条件设置。如果为空,则条件作废
7. 实体类中的注解补充
1. 该注解表示这个属性不参与查询,也可以说,当查询数据库表时,该属性对应的字段不参与查询,在返回的结果中,也就没有该字段的值
2. 该注解表示数据库表中不存在该字段,也就是该属性是编程人员自己定义的,在数据库表中没有
8.依赖和配置
一定要在pom.xml 文件中添加 MybatisPlus 的依赖
在配置中定义数据源