SpringBoot
1 | src |
Spring Boot 核心特性
自动配置(Auto Configuration)
根据你引入的依赖,自动帮你配置相关组件(比如引入 spring-boot-starter-web,就自动配置了 Tomcat、SpringMVC)。起步依赖(Starter)
官方提供了很多 spring-boot-starter-xxx,例如:
spring-boot-starter-web:Web 开发(包含 SpringMVC + Tomcat)
spring-boot-starter-data-jpa:数据库 JPA
spring-boot-starter-test:测试
内嵌服务器
不需要单独安装 Tomcat,Spring Boot 自带,可以直接打成 jar 包运行。Actuator 监控
提供了应用运行时的健康检查、监控指标接口。
Spring Boot 常见注解
@SpringBootApplication:入口类注解,包含了:
@Configuration:配置类
@EnableAutoConfiguration:开启自动配置
@ComponentScan:开启包扫描
@RestController:返回 JSON 的控制器
@RequestMapping / @GetMapping / @PostMapping:映射 URL
@Autowired:自动注入 Bean
@Service / @Repository / @Component:定义 Bean 类型
1 | server: |
JPA
全称:Java Persistence API
作用:是一套 Java 的 ORM(对象关系映射)规范,用于把 Java 对象和数据库表关联起来。
核心概念
实体类(Entity)
用 @Entity 标注的类,对应数据库的一张表。1
2
3
4
5
6
7
8
9
10
11
public class User {
private Long id;
private String username;
private String password;
}实体管理器(EntityManager)
JPA 操作数据库的核心接口,类似于 JDBC 的 Connection。持久化单元(Persistence Unit)
定义数据库连接、JPA 提供者等信息(在 Spring Boot 里一般写在 application.yml)。
常用注解
@Entity:声明一个实体类
@Table(name = “xxx”):映射数据库表名
@Id:主键
@GeneratedValue:主键生成策略(如自增)
@Column(name = “xxx”):指定数据库字段名
@OneToMany、@ManyToOne、@ManyToMany:定义表之间的关系
在Spring Boot中用JPA
- 引入依赖、配置参数
- 定义 Repository 接口
1
2
3
4public interface UserRepository extends JpaRepository<实体类名, 主键类型> {
User findByUsername(String username);
}
简单查询不需要写sql
1 | User findByUsername(String username); |
复杂查询时
用 @Query + JPQL
1
2
3
4
5public interface UserRepository extends JpaRepository<User, Long> {
User login(String username, String password);
}用 @Query + 原生 SQL
如果 JPQL 表达不出来,可以直接写数据库 SQL:1
2
3
4
5public interface UserRepository extends JpaRepository<User, Long> {
// nativeQuery = true 表示使用原生 SQL。
User findByUsernameNative(String username);
}用 @NamedQuery
在实体类上定义查询:1
2
3
4
public class User { ... }用 Specification(动态查询)
Spring Data JPA 提供了 Specification 接口,可以用 Java 代码拼装复杂查询(适合多条件动态查询)。1
2
3List<User> users = userRepository.findAll((root, query, cb) ->
cb.equal(root.get("username"), "Tom")
);




