SSMP小案例Dao层(基础CURD)

先导坐标

然后配置

```
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/books?useSSL=false&serverTimezone=CST
      username: root
      password:
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_
      #mybatis-plus主键自增策略
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
```

编写mapper

```
@Mapper
public interface BookMapper extends BaseMapper<Book> {

}

```

在测试中创建mapper中编写测试用例,测试mapper接口

```
package com.hxut.mapper;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hxut.domain.Book;

@SuppressWarnings("all")
@SpringBootTest
public class BookTestCase {
    @Autowired
    private BookMapper bookMapper;
    @Autowired
    private Book book;

    /**
     * 测试根据id进行查询
     */
    @Test
    void testGetById(){
        System.out.println(bookMapper.selectById(1));
    }

    /**
     * 测试增加
     */
    @Test
    void testSave(){
        book.setType("测试数据123");
        book.setName("测试数据123");
        book.setDescription("测试数据123");
        bookMapper.insert(book);
    }

    /**
     * 测试更新
     */
    @Test
    void testUpdate(){
        book.setId(19);
        book.setType("测试数据123");
        book.setName("测试数据123sds");
        book.setDescription("测试数据123");
        bookMapper.updateById(book);
    }

    /**
     * 测试删除
     */
    @Test
    void testDelete(){
        System.out.println();
    }

    /**
     * 测试查询全部
     */
    @Test
    void testGetAll(){
        System.out.println(bookMapper.selectList(null));
    }

    /**
     * 测试分页
     */
    @Test
    void testGetPage(){
        IPage page=new Page(1,5);
        bookMapper.selectPage(page,null);
        System.out.println(page.getCurrent());//当前的页码
        System.out.println(page.getSize());//每页多少数据
        System.out.println(page.getTotal());//总记录条数
        System.out.println(page.getRecords());//数据
    }

    /**
     * 测试条件查询
     */
    @Test
    void testGetBy(){
        //QueryWrapper就相当于条件查询
        QueryWrapper<Book>  qw = new QueryWrapper<>();
        //相当于select * from tbl_book where name like %Java%
        qw.like("name","Java");
        bookMapper.selectList(qw);
    }

    @Test
    void testGetBy2(){
        String name="1";
        LambdaQueryWrapper<Book>  lqw = new LambdaQueryWrapper<>();
//        if(name!=null)  lqw.like(Book::getName,name);
        lqw.like(name!=null,Book::getName,name);
        bookMapper.selectList(lqw);
    }

}

```

这里需要注意一下,这里我们不用设置id,我们要用数据库主键策略的自增策略,但是mybatisplus有它自己的主键策略,用的是雪花算法,但是我么你要的是自增策略,下面就要配置了。

自增的主键策略两种方式
方式一:

方式二:在实体类上的id属性标注一下@TableId(type = IdType.AUTO)

还有个知识点说一下,这个queryWrapper其实就是个条件筛选,这里就写null就行了。

要是我们想看mybatisplus执行语句的流程呢,就要配置一下日志了。

还有就是这个分页功能,selectPage里面需要两个参数,一个是Page,一个是queryWrapper,
需要一个Page所以我们返回一个Page,Ipage是个接口,Page是它的实现,然后里面的两个参数代表的分别是,current代表从第几页开始分页,size代表一页多少数据。

光凭这样是无法分页的,分页要想使用的话必须用MP提供的拦截器。
这个拦截器是需要配置的,那么放在那里呢?
新建一个config包,在config包下创建配置类。这样拦截器就算是配好了,分页就可以用了。(必须要加@Configuration注解否则不能被Springboot扫描)

然后就是这个bookMapper.selectPage(page,null);返回的也是一个Ipage对象,可以根据它输出一些信息。

按条件筛选就是需要一个QueryWrapper对象,然后用like方法进行模糊查询。

然后就是还有一种方法去自动获取它的字段名

你也可以对它进行判断,如果不为name不为空,name就进行模糊查询

```
    @Test
    void testGetBy2(){
        String name="1";
        LambdaQueryWrapper<Book>  lqw = new LambdaQueryWrapper<>();
//        if(name!=null)  lqw.like(Book::getName,name);
        lqw.like(name!=null,Book::getName,name);
        bookMapper.selectList(lqw);
    }
```


posted @ 2022-04-23 20:36  长情c  阅读(61)  评论(0)    收藏  举报