目录
一、简介
SpringBoot的基于RESTful风格的编程开发,使得后台人员可以编写接口让我们通过访问对应的接口来访问数据,而基于RESTful风格的SpringBoot的开发使其更具有遍历简洁的特性:
- 简单轻便,通过HTTP协议来直接访问地址获取对应的内容
- 数据结构简洁明了,一般使用的JSON或XML
二、RESTful风格的CRUD
前言:
在使用SpringBoot来进行开发的时候也是离不开之前的SSM的MVC层次思想,通过将各个不同的逻辑分为不同的块下,使得代码维护和编写更加可读和维护性,这里我们使用的是SpringBoot和mybatis整合的CRUD,SpringBoot和mybatis整合有两种方式:1、一种是利用@Mapper来实现在dao层就对数据库进行编写2、另一种是利用mapper.xml文件的形式来对数据库进行CRUD,这里我们使用的是第一种方式。
步骤:
1、创建一个SpringBoot程序,如不知道如何创建可以参考之前的文章:SpringBoot入门01-初识SpringBoot,并且按照MVC思想分为model,mapper,service,controller四个不同的包,分别实现不同的逻辑。
2、在pom.xml文件中导入对应的Mybatis包
完整的pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、创建数据库
CREATE TABLE user(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL ,
password VARCHAR(255) NOT NULL ,
phone VARCHAR(255) NOT NULL
) ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
4、创建Model层中的User.java
package com.example.demo.model;
public class User {
private Integer id;
private String username;
private String password;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
5、创建Dao层中的Mapper文件UserMapper,这里我们使用的@Mapper注释来直接编写CRUD语句。
package com.example.demo.mapper;
import com.example.demo.model.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
@Select("select * from user where id=#{id}")
User selectByid(Integer id);
@Insert("Insert into user(username,password,phone) value(#{username},#{password},#{phone})")
int insert(User user);
}
6、为Service层添加UserService,以及其实现UserServiceImpl
UserService代码如下:
package com.example.demo.service;
import com.example.demo.model.User;
public interface UserService {
User selectByid(Integer id);
int insert(User user);
}
UserServiceImpl代码如下:
package com.example.demo.service.Impl;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public int insert(User user){
return userMapper.insert(user);
}
@Override
public User selectByid(Integer id){
return userMapper.selectByid(id);
}
}
7、编写Controller类下的UserController
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/insert")
public int insert(User user){
User userdemo=new User();
userdemo.setUsername("sana");
userdemo.setPassword("123");
userdemo.setPhone("12345");
return userService.insert(userdemo);
}
@RequestMapping("/select")
public User selectByid(Integer id){
return userService.selectByid(1);
}
}
8、为项目编写application.yml对项目进行数据库DataBase进行配置
#配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
9、完整的项目如下:
10、运行DemoApplication主程序类,并且利用postman进行接口访问:
访问的两个接口为:1、http://127.0.0.1:8080/user/insert 2、http://127.0.0.1:8080/user/select
注意:若没有postman,可以直接在浏览器中访问上诉两个地址,结果是一样的。
三、总结
SpringBoot和mybatis的整合相比于原来的ssm更加简洁,让我们更专注于程序的编写而不是配置文件的处理,我们可以很清楚的看到,我们不需要像原先一样来编写mapper.xml配置文件而是直接利用@mapper来实现CRUD的操作,但是SpringBoot也可以利用mapper.xml来进行整合,只是这里笔者没有举出。
今日分享:人生的磨难是很多的,所以我们不可对于每一件轻微的伤害都过于敏感。在生活磨难面前,精神上的坚强和无动于衷是我们抵抗罪恶和人生意外的最好武器。