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);
}
```




浙公网安备 33010602011771号