MybatisPlus 项目中使用

 大家好 , 我是苏麟 , 今天带来 MybatisPlus 的简单使用 .


官方网站 :  MyBatis-Plus (baomidou.com)

MybatisPlus 项目中使用_第1张图片

开始使用

初步体验

引入依赖

        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.1
        

        
            com.alibaba
            druid
            1.1.16
        

根据数据库表创建实体类

@Data
public class Book {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String name;
    private String description;
}

创建类

@Mapper
public interface BookDao extends BaseMapper {
}

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 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(@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 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)

 这期就到这里 下期见 ! 拜拜 !

你可能感兴趣的:(java项目中高效开发,java,spring,maven)