条件构造器
除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此BaseMapper中提供的相关方法除了以id作为where条件以外,还支持更加复杂的where条件。
使用:
第一步创建条件查询:
//条件的构造查询 QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<SysMenu>() .select("menu_id","menu_name","parent_id")//选择特定的列: .like("menu_name","系统")//添加了一个模糊查询条件,查找 menu_name 列中包含 "系统" 这个子字符串的记录。like 方法默认会在子字符串前后添加 % 符号,实现前后模糊匹配。 .eq("parent_id",0);//添加了一个等值查询条件,查找 parent_id 列等于 0 的记录。
测试:
@SpringBootTest public class WrapperTest { @Autowired SysMenuMapper sysMenuMapper; @Test public void testQueryWrapper(){ //条件的构造查询 QueryWrapper<SysMenu> queryWrapper = new QueryWrapper<SysMenu>() .select("menu_id","menu_name","parent_id")//选择特定的列: .like("menu_name","系统")//添加了一个模糊查询条件, // 查找 menu_name 列中包含 "系统" 这个子字符串的记录。like 方法默认会 // 在子字符串前后添加 % 符号,实现前后模糊匹配。 .eq("parent_id",0);//添加了一个等值查询条件,查找 parent_id 列等于 0 的记录。 List<SysMenu> list =sysMenuMapper.selectList(queryWrapper); System.out.println(list); } }
eq
方法用于等值匹配,如果需要其他类型的匹配,可以使用MyBatis-Plus
提供的其他方法,如ne
(不等于)、gt
(大于)、lt
(小于)等。
Service接口
MybatisPlus不仅提供了BaseMapper,还提供了通用的Service接口及默认实现,封装了一些常用的service模板方法。 通用接口为IService,默认实现为ServiceImpl,其中封装的方法可以分为以下几类:
-
save:新增
-
remove:删除
-
update:更新
-
get:查询单个结果
-
list:查询集合结果
-
count:计数
-
page:分页查询
创建service业务逻辑层
@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService { }
分页插件使用
在未引入分页插件的情况下,MybatisPlus是不支持分页功能的,IService和BaseMapper中的分页方法都无法正常起效。 所以,我们必须配置分页插件。
配置分页插件
在项目中新建一个配置类:
其代码如下:
package com.zking.mp.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MybatisConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { // 初始化核心插件 MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加分页插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
测试
package com.zking.zmall; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zaxxer.hikari.HikariDataSource; import com.zking.zmall.pojo.SysMenu; import com.zking.zmall.service.SysMenuService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class SysMenuServiceTest { @Autowired private SysMenuService sysMenuService; @Autowired private HikariDataSource dataSource; @Test public void testlist(){ sysMenuService.list().forEach(System.out::println); } @Test public void testPage(){ //Page size:5 每页数量 current:1 当前页码 Page<SysMenu> page = new Page<>(1, 5); page = sysMenuService.page(page); System.out.println("第几页"+page.getCurrent()); System.out.println("总记录数"+page.getTotal()); System.out.println("总页数"+page.getPages()); System.out.println("数据"+page.getRecords()); } }
生成器
idea下载mybatisX插件
添加数据源
选中表(可多选)右键使用插件