【SpringBoot】SSMP整合案例

SSMP整合案例

根据黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战实现

1.模块创建

  1. 创建SpringBoot项目

  2. 勾选Spring-MVC和MySQL坐标

  3. 在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>
    
  4. 修改配置文件application.properties为yml格式

  5. 在配置文件中设置tomcat端口为80方便访问

    server:
      port: 80
    
  6. 模块初始结构如下

    image-20211128164530617

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

测试接口

image-20211128203523585

getById

根据id查询书籍

/**
 * 通过id查找书籍
 * @param id 要查找书籍的id
 * @return 查询到的书籍
 */
@GetMapping(
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@未安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值