SSMP整合案例
创建springboot项目选取,SpringMVC和SQL Driver两个功能,mybatis-plus手动导入,引入lombok
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency><!-- lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency>
创建一个Book实体类
@Data
@NoArgsConstructor//无参构造
@AllArgsConstructor//全参构造
@Accessors(chain = true) //允许链式写法
public class Book {
private Integer id;
private String type;
private String name;
private String description;
}
//Data里面包含get/set,toString,hascode,equals方法等
写一个Mapper接口
@Mapper
@TableName(value="book")//对应数据库的表名
public interface BookDao extends BaseMapper<Book> {
}
然后就会有很多方法测试类直接接口.方法名调用即可
@SpringBootTest
public class BookDaoTest {
@Autowired
private BookDao bookDao;
@Test
void testGetById(){
Book book = bookDao.selectById("1");
System.out.println(book);
}
@Test
void testInsert(){
Book book = new Book();
//数据库id设置自增,要使用数据库的自增,就要去配置类去配置
book.setType("2").setName("书").setDescription("4");
bookDao.insert(book);
}
@Test
void testupdate(){
Book book = new Book();
//数据库id设置自增,要使用数据库的自增,就要去配置类去配置
book.setId(1).setType("3").setName("书").setDescription("4");
bookDao.updateById(book);
}
@Test
void testdelete(){
bookDao.deleteById(2);
}
}
mybatis-plus: global-config: db-config: id-type: auto //选择数据库ID自增
MP日志配置
mybatis-plus: global-config: db-config: id-type: auto configuration: #MP日志配置,可以输出打印 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
分页
//配置分页拦截器
package com.zxd.ssmp.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MPconfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//加载分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
测试:
@Test void testselectPage(){ IPage page = new Page(1,5); bookDao.selectPage(page,null); System.out.println(page.getCurrent());//当前页 System.out.println(page.getSize());//当前页的条数 System.out.println(page.getTotal());//总条数 System.out.println(page.getPages());//总页数 System.out.println(page.getRecords());//结果集 }
按条件查询
@Test void testGetBy(){ //支持动态拼接 String name = null; LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>(); qw.like(name != null,Book::getName,name);//不为空拼接like条件 IPage page = new Page(1,5); bookDao.selectPage(page,qw); }
业务层标准开发
Service层
//service接口层
package com.zxd.ssmp.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zxd.ssmp.domain.Book;
import java.util.List;
public interface BookService {
Boolean save(Book book);
Boolean update(Book book);
Boolean delete(Integer id);
Book getById(Integer id);
List<Book> getAll();
IPage<Book> getPage(int currentPage,int size);
}
//serivce实现类
package com.zxd.ssmp.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zxd.ssmp.dao.BookDao;
import com.zxd.ssmp.domain.Book;
import com.zxd.ssmp.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
@Override
public Boolean save(Book book) {
return bookDao.insert(book)>0;
}
@Override
public Boolean update(Book book) {
return bookDao.updateById(book)>0;
}
@Override
public Boolean delete(Integer id) {
return bookDao.deleteById(id)>0;
}
@Override
public Book getById(Integer id) {
return bookDao.selectById(id);
}
@Override
public List<Book> getAll() {
return bookDao.selectList(null);
}
@Override
public IPage<Book> getPage(int currentPage, int size) {
IPage<Book> page = new Page<>(currentPage,size);
return bookDao.selectPage(page,null);
}
}
自定定义一个测试类,然后去测试
业务层快速开发
//service接口层
package com.zxd.ssmp.service.Iservice;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zxd.ssmp.domain.Book;
public interface IBookService extends IService<Book> {
}
//service实现类
package com.zxd.ssmp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zxd.ssmp.dao.BookDao;
import com.zxd.ssmp.domain.Book;
import com.zxd.ssmp.service.Iservice.IBookService;
import org.springframework.stereotype.Service;
@Service
public class IBookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
}
然后编写测试类去测试
package com.zxd.ssmp.serivce;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zxd.ssmp.domain.Book;
import com.zxd.ssmp.service.Iservice.IBookService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class BookServiceTest {
@Autowired
private IBookService iBookService;
@Test
void getAll(){
//查询所有
List<Book> list = iBookService.list();
System.out.println(list);
//根据id查询
Book byId = iBookService.getById(1);
System.out.println(byId);
//根据id修改
Book book = new Book();
book.setName("两本书");
LambdaQueryWrapper<Book> lq = new LambdaQueryWrapper<>();
lq.eq(Book::getId,1);
iBookService.update(book,lq);
//新增
Book book2 = new Book(2,"2","2","2");
iBookService.save(book2);
System.out.println(iBookService.list());
//删除
iBookService.removeById(3);
System.out.println(iBookService.list());
}
}