数据库操作是 web
开发最核心的部分之一,我们一切从简。先能简单地 CURD
(增删改查)即可。
- spring-boot 2.3
- spring-boot-starter-data-jpa
- mysql-5.5
安装&使用
pom.xml
的 <dependencys>
标签中引入以下内容:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
note: mysql-connector-java
根据自己 mysql
版本进行版本设置。如果 mysql
版本大于 5.5
的则建议使用 8.0 以上,否则使用 mysql-connector-java 5.1
。官方文档说明
配置数据库参数
配置地址:src/main/resources/application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.database=mysql
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
note: 参数来源参考 官网示例-data-mysql、Spring Boot Application Properties
表实体
数据库中添加以下表:
CREATE TABLE `article` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '标题',
`content` text COLLATE utf8mb4_bin NOT NULL COMMENT '内容',
`category_id` int(10) unsigned NOT NULL COMMENT '所属分类',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='文章';
表实体放置在 src/main/com/example/demo/entity
文件夹中。
我们使用 IDEA
提供的实体生成工具来自动生成实体。
为了方便阅读我拆成子文章:IDEA 生成 JPA 实体
生成的实体类还需要我们为其添加一些设置,如标识主键。
@Entity
public class Article {
private int id;
// code ...
@Id
@Column(name = "id")
// 标记返回的时候使用数据库自增长的值
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
return id;
}
// code ...
}
添加 Repository
根据上面的实体写一个 repository
,放置在 src/main/com/example/demo/repository
文件夹中。
package com.example.demo.repository;
import com.example.demo.entity.Article;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ArticleRepository extends JpaRepository<Article, Integer> {
}
以上代码即可使用通用的 CURD
了.
CURD
我们在 Controller
中进行调用,代码如下:
package com.example.demo.controller;
import com.example.demo.entity.Article;
import com.example.demo.repository.ArticleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/article")
public class ArticleController {
@Autowired
public ArticleRepository articleRepository;
@GetMapping("/")
public List<Article> index(@RequestParam(name = "cid") int cid) {
return articleRepository.findAllByCategoryId(cid);
}
@GetMapping("/{id}")
public Article show(@PathVariable(value = "id")int id) {
return articleRepository.findById(id);
}
@PostMapping("/")
public Article store(@RequestBody Article article) {
return articleRepository.save(article);
}
@PutMapping("/{id}")
public Article update(@PathVariable(value = "id")int id, @RequestBody Article article) {
article.setId(id);
return articleRepository.saveAndFlush(article);
}
@DeleteMapping("/{id}")
public void delete(@PathVariable(value = "id") int id) {
articleRepository.deleteById(id);
}
}
@RequestBody
需要使用 json
格式。
上面的代码中使用了 RestFul
的方式来请求。
待深入内容
- 数据库事务
- 复杂查询
- 分页
- 联表
其他待了解内容
- JDBC
- mybatis
- DAO / DO / DTO
- impl
- druid
- hibernate
- lombok
结语
这篇文章写的很简单,全部都是边学习边实践出来的内容。适合一些纯新手查看。
Spring Boot 相关文章索引
开发经验
网上的资源太多太杂,有的很多很长,有的因为水平有限看不太懂。
在那里找到自己想要的包以及包适合的版本
现在项目中包管理是通过 maven
的 pom.xml
文件来配置的。我们可以通过 maven 资源网 取得更多的信息。下面我以查找 mybatis
包为示例: