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