文章目录
SSMP整合案例
1.模块创建
-
创建SpringBoot项目
-
勾选Spring-MVC和MySQL坐标
-
在pom.xml中加入Druid,MybatisPlus,Lombok的坐标
<!--Lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--Druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> <!--MybatisPlus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.4</version> </dependency>
-
修改配置文件application.properties为yml格式
-
在配置文件中设置tomcat端口为80方便访问
server: port: 80
-
模块初始结构如下
2. 实体类开发
构建数据库环境
CREATE DATABASE ssm; CREATE TABLE book( id int PRIMARY KEY AUTO_INCREMENT, type varchar(20), name varchar(20) NOT NULL , description varchar(20) )ENGINE =InnoDB DEFAULT CHARSET =utf8;
创建实体类
/** * book表实体类 * @author 刘淳 */ @Data public class Book implements Serializable { @TableId("id") private Integer id; private String type; private String name; private String description; }
3. 持久层开发
- 技术实现方案
- MybatisPlus
- Druid
配置数据源与MybatisPlus的id生成策略
spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false username: root password: root output: ansi: # 开启日志输出支持颜色显示 enabled: always application: name: demo-application mybatis-plus: global-config: db-config: id-type: auto # 设置id策略为数据库自增
配置日志便于调试
mybatis-plus: global-config: db-config: id-type: auto # 设置id策略为数据库自增 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
Mapper接口开发
/** * Book实体类Mapper接口 * @author 刘淳 */ @Mapper public interface BookMapper extends BaseMapper<Book> { }
测试Mapper接口及数据库连接
/** * BookMapper测试类 * @author 刘淳 */ @SpringBootTest public class BookMapperTest { @Autowired private BookMapper bookMapper; @Test void testBookMapper(){ Book book=new Book(); book.setName("小王子"); book.setType("童话"); book.setDescription("启蒙故事,充满道理"); int result = bookMapper.insert(book); System.out.println(result); } }
测试结果
18:27:25 [main] INFO --- ltd.lccyj.mapper.BookMapperTest | Started BookMapperTest in 3.344 seconds (JVM running for 4.614) 18:27:25 [main] DEBUG --- ltd.lccyj.mapper.BookMapper.insert | ==> Preparing: INSERT INTO book ( type, name, description ) VALUES ( ?, ?, ? ) 18:27:25 [main] DEBUG --- ltd.lccyj.mapper.BookMapper.insert | ==> Parameters: 童话(String), 小王子(String), 启蒙故事,充满道理(String) 18:27:25 [main] DEBUG --- ltd.lccyj.mapper.BookMapper.insert | <== Updates: 1
配置分页拦截器
MybatisPlus配置类
/** * MybatisPlus配置类 * @author 刘淳 */ @Configuration public class MybatisPlusConfiguration { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ //定义MybatisPlus拦截器 MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor(); //添加具体拦截器 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
4. 业务层开发
- MP提供了通用业务层接口
IService<T>
与业务层通用实现类ServieceImpl<M,T>
- 在通用类基础上做功能重载或功能追加
- 注意重载时不要覆盖原始操作,避免原始提供的功能丢失
业务层接口开发
/** * Book实体类业务层接口 * @author 刘淳 */ public interface BookService extends IService<Book> { }
业务层实现类开发
/** * Book实体类业务层实现类 * @author 刘淳 */ @Service public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService { }
5. 表现层开发
- 基于Restful进行表现层接口开发
- 使用Postman测试表现层接口功能
BookController
/** * Book实体类表现层控制器 * @author 刘淳 */ @RestController @RequestMapping("/books") public class BookController { private final BookService bookService; @Autowired public BookController(BookService bookService) { this.bookService = bookService; } }
getAll
查询所有书籍
/** * 获取所有书籍数据 * @return 查询到的所有书籍 */ @GetMapping public List<Book> getAll(){ return bookService.list(); }
测试接口
getById
根据id查询书籍
/** * 通过id查找书籍 * @param id 要查找书籍的id * @return 查询到的书籍 */ @GetMapping("/{id}") public Book getById(@PathVariable Integer id){ return bookService.getById(id); }
测试接口
save
添加书籍
/** * 添加书籍 *