本文将会展示如何从0开始搭建一个Spring项目,并且会集成常用的插件,实现一个简单的CMS。本文适合有一定编程基础,想要快速入门Springboot开发的同学看,因为省略了一些基础的流程,如如何安装Java,如果安装mysql数据库,java语言基础,Spring相关基础知识等。
前置
- 安装了java
- 安装了 idea
一. 创建Spring项目
-
打开idea,点击新建项目,确定信息后,点击“Next”,
-
选择插件 Lombok, spring web,spring data jpa,mysql, 选择完成后点击创建按钮
-
此时项目开始构建,下载依赖需要一定的时间。构建完成后,我们配置一下数据库信息
在resource/application.properties中输入以下信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/cms
spring.datasource.username=root
spring.datasource.password=12345678
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
- 新建controller。 在cms文件下新建目录HomeController.java
package com.example.cms.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
@GetMapping("/")
public String home(){
return "Hello world";
}
}
- 点击右上角箭头,运行项目。 如果箭头显示不可点击,或者点击后报java版本的错误,一定要确定一下几个地方的版本一致。
运行成功后,在浏览器输入 http://127.0.0.1 就可以正常预览了
二. 集成数据库
Springboot针对持久层操作的主流框架有MyBatis(Plus)和JPA, 相比较而言我更喜欢JPA多一些,使用JPA可以更专注于业务,而不去关注sql是如何实现的。
1. 实现一个简单新增数据
创建entity
package com.example.cms.entity;
import jakarta.persistence.*;
import lombok.Data;
@Entity
@Table(name="user")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name", length = 20, nullable = false)
private String userName;
}
创建dao
package com.example.cms.dao;
import com.example.cms.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User,Long> {
}
创建service
package com.example.cms.service;
import com.example.cms.entity.User;
public interface UserService {
User add(Long id,String userName);
}
------------实现类---------------------
package com.example.cms.service.impl;
import com.example.cms.entity.User;
import com.example.cms.dao.UserRepository;
import com.example.cms.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserRepository userRepository;
@Override
public User add(Long id, String userName) {
User _user = new User();
_user.setUserName(userName);
_user.setId(id);
userRepository.save(_user);
return null;
}
}
在HomeController中测试
@GetMapping("/")
public String home(){
userService.add(Long.valueOf(1),"nike");
return "Hello world";
}
重启项目,访问一下这个地方,然后在数据库中就可以看到新增了一个user表,并且里面插入了一条数据。
简单查询
在上面的案例中,我们向user表中插入了1条name为nike的数据,现在我们来做一个查询操作。
UserRepository.java
public interface UserRepository extends JpaRepository<User,Long> {
User findByUserName(String username);
}
UserService.java
public interface UserService {
User add(Long id,String userName);
User getByName(String name);
}
UserServiceImpl.java
@Override
public User getByName(String name) {
User user = userRepository.findByUserName(name);
return user;
}
HomeController.java
@GetMapping("/")
public String home(){
User user = userService.getByName("nike");
return "Hello,"+user.getUserName();
}
重启服务器,再次刷新浏览器页面就可以看到输出“Hello, nike”了。
三. JPA的查询操作
简单查询
复杂查询
分页
四. 其他库的引入
redis
mq
log
五. 安全
鉴权
六. 分布式
nacos
七. 大数据
分表
分库
多数据源
数据库读写分离
八. 部署
直接部署
脚本部署
反向代理