前言:以前最开始用eclipse加各种插件开发springboot,简直是麻烦到哭,后来发现IDEA可以直接快速搭建环境免除一切插件烦恼,于是记录一些平时的开发体验。
编程语言java,编译环境IntelliJ IDEA
利用IDEA中的Spring Initializr快速创建Springboot程序,如下图所示
项目目录如图所示,Application就是启动项目的地方。
如果代码中出现报错,通过自动补全添加maven dependency即可。完成之后按左边的三角形按钮即可启动程序
一般编写后段服务器的时候都会分层编写,以降低耦合性,首先编写POJO类,然后再编写Dao层(Data Access Objects 数据访问层),即包装数据库操作语句的这一层,接着再根据需要的业务逻辑编写Service层,最后再通过Controller层暴露对应的API接口。理清楚逻辑和编写顺序之后咱们就开始吧!
(一)首先是POJO类,随便写一个class即可,功能任意,之后会构建对应的数据库(MySQL),如下所示:
public class User {
private int id ;
private String name;
public User(){}
public User(int i, String n){
this.id=i;
this.name=n;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(二)仅接着是Dao层,我们会在这一层包装sql query语句,将CRUD操作变成可以直接使用的java代码,这里会利用JdbcTemplate快速操作:
@Repository
public class UserDao {
@Autowired
JdbcTemplate jdbcTemplate;
public int add(User u){
return jdbcTemplate.update("INSERT INTO user(id, name) VALUES(?,?)",
u.getId(), u.getName());
}
public int update(User u){
return jdbcTemplate.update("update user set name=? WHERE id=?",
u.getName(), u.getId());
}
public User getById(Integer id){
return jdbcTemplate.queryForObject("select * from user where id=?",
new BeanPropertyRowMapper<>(User.class), id);
}
public int deleteById(Integer id){
return jdbcTemplate.update("DELETE FROM user where id=?", id);
}
public List<User> getAll(){
return jdbcTemplate.query("select * from user",
new BeanPropertyRowMapper<>(User.class));
}
}
(三)到了这一步,就可以开始写Service层了,其实写代码的时候可以图方便将Dao层和Service层写在一起,但是为了低耦合性应该分开写,这里会写一个接口和对应的接口实现类,先写Service接口:
public interface UserService {
int addUser(User u);
int updateUser(User u);
User getUserById(Integer id);
int deleteUserById(Integer id);
List<User> getAllUsers();
}
然后是ServiceImpl类:
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserDao userDao;
public int addUser(User u){
return userDao.add(u);
}
public int updateUser(User u){ return userDao.update(u);}
public User getUserById(Integer id){return userDao.getById(id);}
public int deleteUserById(Integer id){
return userDao.deleteById(id);
}
public List<User> getAllUsers(){
return userDao.getAll();
}
}
(四)最后就是Controller层,利用这一层暴露API接口,这样就可以和前段进行数据交互,如post和get操作,代码一开始的@RequestMapping中写上对应的API部分,可以自定义,然后接下来的@GetMapping或者@PostMapping都是用来定义API的,将API拼接在一起即可访问:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/add")
@ResponseBody
public User addUser(@RequestParam("User") User u){
userService.addUser(u);
return u;
}
@GetMapping("/show")
public List<User> user(){
return userService.getAllUsers();
}
}
(五)接下来需要创建好对应的MySQL数据库,构建对应的栏位,这里不做过多赘述,配置好之后在IDEA中添加数据库,如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200213174310813.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09sZERyaXZlcjE5OTU=,size_16,color_FFFFFF,t_70
并且在左侧栏目中的application.properties中进行配置,数据库的配置方式有很多种,这里暂时只使用这一种:
server.port=8083
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/testNet
spring.datasource.platform = mysql
spring.datasource.username=root
spring.datasource.password=zts19950208
如果启动不了的话修改一下pom配置,具体如下:
<?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 https://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.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo23</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo23</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-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>