首页 > 其他分享 >SpringBoot-3.3.4最新快速入门教程二整合Mybatis

SpringBoot-3.3.4最新快速入门教程二整合Mybatis

时间:2024-09-24 12:51:41浏览次数:11  
标签:return SpringBoot song 入门教程 private public 3.3 id

Hello,大家好,我是Feri,一枚十多年的程序员,同时也是一名在读研究生,关注我,且看一个平凡的程序员如何在自我成长,CodingSir是我想打造一个编程社区,只为各位小伙伴提供编程相关干货知识,希望在自我蜕变的路上,我们一起努力,努力什么时候开始都不晚,我,从现在开始做起!

一、前言

        在上一篇教程中简单说了一下SpringBoot最新版本怎么快速入门,就有小伙伴在问,那怎么使用SpringBoot代替原来的SSM框架作为开发呀,好啦,本篇教程就是教你怎么用SpringBoot替代SSM,感受开发效率翻倍的快乐。

        本篇就是通过SpringBoot框架代替Spring+SpringMVC,整合Mybatis框架,来感受一下快速开发,SpringBoot框架推荐使用注解,并且只需application配置文件,就可以代替原来SSM的所有配置文件,那么咱们就开始吧。

 二、SpringBoot整合Mybatis

2.1 需求

我们现在实现一个喜欢歌单的操作,要求实现:喜欢歌曲的新增、修改、删除、查询操作

注意:喜欢歌曲的字段:歌曲名称、歌手姓名、歌曲类型、评分、用户名、日期

2.2 分析

我们这次使用技术栈:SpringBoot+Mybatis框架实现本次需求的操作

2.3 设计

接口设计:

1.查询接口使用Get请求,参数格式采用键值对的形式

2.新增、修改、删除操作,使用Post请求,参数格式采用Json格式

数据库设计:

设计一个数据库表,存储喜欢的歌曲信息

数据库脚本:

create database db_codingsir_song char set 'utf8mb4';

use db_codingsir_song;

CREATE TABLE t_user_song(
    `id` INT AUTO_INCREMENT COMMENT '序号,自增' ,
    `name` VARCHAR(11)   COMMENT '用户姓名' ,
    `sname` VARCHAR(20)   COMMENT '歌曲名称' ,
    `stype` VARCHAR(10)   COMMENT '歌曲类型' ,
    `score` INT   COMMENT '歌曲评分' ,
    `songer` VARCHAR(20)   COMMENT '歌手姓名' ,
    `create_time` DATETIME   COMMENT '创建时间' ,
    PRIMARY KEY (id)
)  COMMENT = '用户歌曲表';

2.4 编码

1.创建项目

2.依赖jar

在项目的pom.xml中实现jar的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.23</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.实现配置

在application.yaml中实现数据库和Mybatis相关配置

spring:
  datasource: #数据库链接相关配置
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///db_codingsir_song
    username: root
    password: xing1688
    
  jackson: #json格式日期设置
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

mybatis: #mybatis配置
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

在开关类上,使用注解标记持久层包名:

@SpringBootApplication
@MapperScan(basePackages = "com.feri.springbootmybatis.dao")
public class SpringBootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootMybatisApplication.class, args);
    }

}

4.编写代码,实现功能

1.封装接口的统一结果对象

@Data
@NoArgsConstructor
@AllArgsConstructor
public class R<T> {
    private Integer code;
    private String msg;
    private T data;
    /**
     * 成功*/
    public static <T> R ok(T obj){
        return new R(0,"操作成功",obj);
    } 
    /**
     * 失败*/
    public static <T> R fail(T obj){
        return new R(1,"操作失败",obj);
    }
}

2.实体层

@Data
public class UserSong {
    private Integer id;
    private String name;
    private String sname;
    private String stype;
    private Integer score;
    private String songer;
    private Date createTime;
}

3.持久层

public interface UserSongDao {
    /**
     * 新增*/
    @Insert("insert into t_user_song(name,sname,stype,songer,score,create_time) values(#{name},#{sname},#{stype},#{songer},#{score},now())")
    int add(UserSong song);
    
    /**
     * 修改*/
    @Update("update t_user_song set sname=#{sname},stype=#{stype},songer=#{songer},score=#{score} where id=#{id}")
    int update(UserSong song);
    
    /**
     * 删除*/
    @Delete("delete from t_user_song where id=#{id}")
    int deleteById(Integer id);
    
    /**
     * 查询*/
    @Select("select * from t_user_song order by create_time desc")
    List<UserSong> all();
    
}

4.业务层

接口:

public interface UserSongService {
    /**
     * 新增*/
    R add(UserSong song);
    /**
     * 修改*/
    R update(UserSong song);
    /**
     * 删除*/
    R delete(Integer id);
    /**
     * 查询*/
    R queryAll();
}

实现类:

@Service
public class UserSongServiceImpl implements UserSongService {
    @Resource
    private UserSongDao dao;
    @Override
    public R add(UserSong song) {
        return dao.add(song)>0?R.ok(""):R.fail("亲,新增失败!");
    }
    @Override
    public R update(UserSong song) {
        return dao.update(song)>0?R.ok(""):R.fail("亲,修改失败!");
    }
    @Override
    public R delete(Integer id) {
        return dao.deleteById(id)>0?R.ok(""):R.fail("亲,删除失败!");
    }
    @Override
    public R queryAll() {
        return R.ok(dao.all());
    }
}

5.控制层

@RestController
@RequestMapping("/api/usersong/")
public class UserSongController {
    @Resource
    private UserSongService service;

    @PostMapping("save")
    public R save(@RequestBody UserSong song){
        return service.add(song);
    }
    @PostMapping("update")
    public R update(@RequestBody UserSong song){
        return service.update(song);
    }
    @PostMapping("delete")
    public R delete(Integer id){
        return service.delete(id);
    }
    @PostMapping("all")
    public R all(){
        return service.queryAll();
    }
}

2.5 测试

运行程序:

使用Idea自带的接口测试工具,对写好的4个接口进行测试

新增接口测试:

查询接口:

2.6 注解详解

在整个代码中,我们又使用了一些注解,那么接下来,整理一下我们刚刚使用的注解的各个作用,你需要背一下哈:

序号注解名用法作用
1@Service修饰类IOC创建对象,用在业务层
2@MapperScan修饰类扫描持久层,自动生成持久层接口实现类对象
3@Resource修饰属性为属性赋值,注入对象,先通过名称不存在再通过类型
4@Insert修饰方法设置对应新增SQL语句
5@Update修饰方法设置对应修改SQL语句
6@Delete修饰方法设置对应删除SQL语句
7@Select修饰方法设置对应查询SQL语句

三、总结

        以上就是使用SpringBoot整合Mybatis的最新代码,有没有感觉很简单好用?是不是要比之前的SSM强悍了很多,而且这次我们又使用了一些新的注解,已经给你整理好了,抓紧时间背背哈,如果对于SpringBoot还有什么需要学习或想要了解的,可以随时在评论区进行沟通交流,好了,你今天学习了吗?

        本篇源代码地址:点击,就可以下载源代码啦

        好啦,今天这篇就打这啦,有任何问题可以随时进行评论交流,如果你有什么想要Feri更新的,请关注CodingSir查看更新的内容,也可以随时关注,私信我哟,成长的路上,有你们相伴,真是人生一大幸事!

标签:return,SpringBoot,song,入门教程,private,public,3.3,id
From: https://blog.csdn.net/CodingSir168/article/details/142478820

相关文章

  • [附源码]宠物领养管理系统+SpringBoot
    今天带来一款优秀的项目:宠物领养管理系统源码 。系统采用的流行的前后端分离结构,内含功能包括"管理端",“用户领养端”,“宠物管理”,“权限登录”等功能。如果您有任何问题,也请联系小编,小编是经验丰富的程序员!一.系统演示视频 https://githubs.xyz/show/270.mp4后端代码结......
  • springboot配置多个环境的properties之 常规配置
    在SpringBoot中,你可以通过多个配置文件来为不同的环境配置不同的属性。这些配置文件应该有不同的命名,并且可以放在src/main/resources目录下。你可以使用application.properties作为默认配置。然后,为不同的环境创建特定的配置文件,比如:application-dev.properties:开发环......
  • springboot中药材进存销管理系统
    基于springboot+vue实现的中药材进存销管理系统 (源码+L文+ppt)4-079 4系统总体设计  4.1系统功能结构设计图  根据需求说明设计系统各功能模块。采用模块化设计方法实现一个复杂结构进行简化,分成一个个小的容易解决的板块,然后再将小的板块继续分化成功能单一的更......
  • Python 入门教程(7)面向对象 | 7.2、成员变量
    文章目录一、成员变量1、成员变量的类型2、实例变量2.1、定义实例变量2.2、访问实例变量2.3、删除实例变量3、类变量3.1、定义类变量3.2、访问类变量3.3、修改类变量4、注意事项5、总结前言:在Python的面向对象编程(OOP)中,变量可以分为两大类:实例变量和类变量。这......
  • 基于SpringBoot考研资讯管理系统的设计和实现(源码+LW+调试文档)
     目录:完整视频演示:系统架构:程序运行截图:核心代码参考:   数据库sql:项目技术介绍:java介绍:Mysql数据库介绍:为什么选择我:获取源码:......
  • 基于SpringBoot医疗管理系统的设计和实现(源码+LW+调试文档)
     目录:完整视频演示:系统架构:程序运行截图:核心代码参考:   数据库sql:项目技术介绍:java介绍:Mysql数据库介绍:为什么选择我:获取源码:......
  • java项目之基于springboot框架开发的景区民宿预约系统的设计与实现(源码+文档)
    项目简介基于springboot框架开发的景区民宿预约系统的设计与实现的主要使用者分为:管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,根据公告信息进行新增、修改、查询操作等等。。......
  • SpringBoot 整合 apache fileupload 轻松实现文件上传与下载(通用版)
    我们以Thymeleaf页面模板引擎为例,简单介绍利用apachefileupload工具实现文件上传的功能。2.1、添加相关依赖包首先创建一个基础的SpringBoot项目,并引入相关的依赖包。2.2、添加相关配置参数2.3、文件上传示例对应文件上传的Controller类,示例如下:importorg.apache.commons.fi......
  • SpringBoot 整合 apache fileupload 轻松实现文件上传与下载(通用版)
    我们以Thymeleaf页面模板引擎为例,简单介绍利用apachefileupload工具实现文件上传的功能。2.1、添加相关依赖包首先创建一个基础的SpringBoot项目,并引入相关的依赖包。2.2、添加相关配置参数2.3、文件上传示例对应文件上传的Controller类,示例如下:importorg.apache.commons.fi......
  • 2024最新高分源码基于SpringBoot+Vue+uniapp的大湾区旅游推荐系统(源码+lw+部署文档+
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......