导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/sell?characterEncoding=utf-8&useSSL=false
username: root
password: 123456
jpa:
show-sql: true
ddl-auto: create
ddl-auto:
- create:创建一个表,若表已经存在,则先删除再创建一个
- create-drop:项目结束运行时,表格就删除了
- update:表格不会清空只是更新操作
- validate:运行程序时,校验字段类型是否相同,不同会报错。
数据库连接
@Entity
:每个持久化POJO类都是一个实体Bean,用于映射数据库表
@Table
:声明此对象映射到数据库的数据表,该注释不是必须的,如果没有,系统会使用默认值(实体类的短名)
@Id
:用于指定表的主键
@GeneratedValue
:默认使用主键生成方式为自增,hibernate会自动生成一个名为HIBERNATE_SEQUENCE的序列
@Column
:用来映射属性名和字段名,没有注解的时候,hibernate会自动根据属性名字生成数据表的字段名。如:name映射生成NAME,多字母属性如:userName会自动映射USER_NAME
Sprin-Data-Jpa
Jpa:(Java Persistence API) 定义了一系列对象持久化标准
如:设计一个RESTful API
// StudentRepository 命名规范 表+Repository
//<Student,Integer> 实体类,主键类型
public interface StudentRepository extends JpaRepository<Student,Integer> {
}
@RestController
public class StudentRepositoryTest {
@Autowired
private StudentRepository repository;
//获取学生所有信息
@GetMapping("/students")
public List<Student> getAll(){
return repository.findALL();
}
//创建一条学生信息
@PostMapping("/students")
public Student Create(@RequestParam("name") String name,@RequestParam("fee") String fee)){
Student student = new Student();
Student.setName("name");
Student.setFee("fee")
return repository.save(student);
}
//通过id查询学生
@GetMapping("/students/{id}")
public Student findByid(@PathVariable("id") Integer id){
return repository.findByid(id).orElse(null); //若找到返回学生,没找到返回null
}
//通过id更新学生
//require="false" 不是必须的
@PutMapping("/students/{id}")
public Student update(@PathVariable("id") Integer id,@RequestParam(value="name",require="false") String name,@RequestParam(value="fee",require="false") String fee){
Optional<Student> optional = repository.findByid(id);
Student student;
if(optional.ifPresent()){ //若学生存在
student = optional.get();
}else{
return null;
}
Student.setName("neme");
Student.setFee("fee")
return repository.save(student);
}
}
数据库事务操作
在类上加入注解@Transactional
即可实现