大家好 , 我是苏麟 , 今天带来 MybatisPlus 的简单使用 .
官方网站 : MyBatis-Plus (baomidou.com)
开始使用
初步体验
引入依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>
根据数据库表创建实体类
@Data
public class Book {@TableId(type = IdType.AUTO)private Integer id;private String name;private String description;
}
创建类
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
Dao接口要想被容器扫描到,有两种解决方案:
方案一:在Dao接口上添加@Mapper注解,并且确保Dao处在引导类所在包或其子包中 该方案的缺点是需要在每一Dao接口中添加注解
方案二:在引导类上添加@MapperScan注解,其属性为所要扫描的Dao所在包 该方案的好处是只需要写一次,则指定包下的所有Dao接口都能被扫描到,@Mapper就可以不 写。
测试类
@SpringBootTest
class SpringbootMybatisplusApplicationTests {@Autowiredprivate BookDao bookDao;/*** 目标 : 添加* 有问题?*/@Testvoid getSave() {Book book = new Book();book.setName("斗罗大陆");book.setDescription("佼佼战魂锤,巍巍昊天宗");bookDao.insert(book);}/*** 目标 : 修改*/@Testvoid updateTest() {Book book = new Book();book.setId(4);book.setName("斗罗大陆");book.setDescription("佼佼战魂锤,巍巍昊天宗");bookDao.updateById(book);}/*** 目标 : 删除*/@Testvoid deleteTest() {bookDao.deleteById(3);}/*** 目标 : 根据id查询*/@Testvoid getByIdTest() {Book book = bookDao.selectById(1);System.out.println(book);}/*** 目标 : 查询全部*/@Testvoid getAllTest() {List<Book> books = bookDao.selectList(null);System.out.println(books);}/*** 目标 : 分页查询* ctrl + h 查看接口实现类** 需要一个配置类 开启分页*/@Testvoid getByPage(){/*** 目标 :* current 当前页* size 一页有几条*/IPage iPage = new Page(1,2);IPage page = bookDao.selectPage(iPage, null);System.out.println("当前第几页 : "+page.getCurrent());System.out.println("每页显示多少数 : "+page.getSize());System.out.println("一共多少页 : "+page.getPages());System.out.println("一共多少条数据 : "+page.getTotal());System.out.println("数据 : "+page.getRecords());}}
分页的使用
使用分页的插件
/*** 配置MP的分页插件*/
@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
}
分页查询的实现
/*** 分页查询* @param page* @param pageSize* @param name* @return*/@GetMapping("/page")public R<Page> page(@RequestParam(required = false, defaultValue = "1") int page,@RequestParam(required = false, defaultValue = "10") int pageSize,String name){log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);//构造分页构造器Page pageInfo = new Page(page,pageSize);//构造条件构造器LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper();//添加过滤条件queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);//添加排序条件queryWrapper.orderByDesc(Employee::getUpdateTime);//执行查询employeeService.page(pageInfo,queryWrapper);return R.success(pageInfo);}
如果想了解Wrapper请看 : MyBatisPlus.pdf (gitee.com)
这期就到这里 下期见 ! 拜拜 !