大家好 , 我是苏麟 , 今天带来 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 {
@Autowired
private BookDao bookDao;
/**
* 目标 : 添加
* 有问题?
*/
@Test
void getSave() {
Book book = new Book();
book.setName("斗罗大陆");
book.setDescription("佼佼战魂锤,巍巍昊天宗");
bookDao.insert(book);
}
/**
* 目标 : 修改
*/
@Test
void updateTest() {
Book book = new Book();
book.setId(4);
book.setName("斗罗大陆");
book.setDescription("佼佼战魂锤,巍巍昊天宗");
bookDao.updateById(book);
}
/**
* 目标 : 删除
*/
@Test
void deleteTest() {
bookDao.deleteById(3);
}
/**
* 目标 : 根据id查询
*/
@Test
void getByIdTest() {
Book book = bookDao.selectById(1);
System.out.println(book);
}
/**
* 目标 : 查询全部
*/
@Test
void getAllTest() {
List<Book> books = bookDao.selectList(null);
System.out.println(books);
}
/**
* 目标 : 分页查询
* ctrl + h 查看接口实现类
*
* 需要一个配置类 开启分页
*/
@Test
void 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 {
@Bean
public 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)
这期就到这里 下期见 ! 拜拜 !