上一节学习了Spring-boot的基本知识,这一节进一步学习一下Spring-boot结合Spring-Data-JPA操作MySQL数据库。首先介绍JPA:Java Persistence API,定义了一系列对象持久化的标准,是一个标准。
第一步:在配置文件中引入Spring-Data-JPA和MySQL的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
第二步:在yml配置文件中配置数据库的地址及相应的jpa。【在我的本地安装的MySQL中已经创建了数据库learn】
spring:
server:
port:8081
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/learn
username: root
password: admin
jpa:
hibernate:
ddl-auto: update # create每次运行都删除原有表创建新表,update不用每次创建新表
show-sql: true # 打印SQL语句
第三步:建立数据库中表对应的实体类student
package com.example.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.Min;
@Entity
public class Student {
@Id
@Min(value = 20110001, message = "学号不得小于20110001")
private int sno;
private String name;
private String major;
public Student(){
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
@Override
public String toString() {
return "Student{" +
"sno=" + sno +
", name='" + name + '\'' +
", major='" + major + '\'' +
'}';
}
}
此时运行程序,数据库中已经成功创建了一张表Student
第四步:数据库操作
(1)查看数据库表
新建StudentRespository接口继承自JpaRepository,然后在StudentController.java中装配,并调用对应方法即可
package com.example.repository;
import com.example.domain.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface StudentRepository extends JpaRepository<Student, Integer>{
//通过major来选择学生
public List<Student> findStudentsByMajor(String major);
}
(2)添加一个学生
(3)根据学号查学生信息
(4)更新学生信息
(5)删除学生信息
(6)通过专业选择学生,此时在JpaRepository中并没有对应的接口,所以需要首先在StudentRepository中定义根据专业选择学生的接口,然后在StudentController中直接调用该方法即可
(7)批量添加学生。由于上面的逻辑都不复杂,所以并没有建立专门的service来处理数据逻辑,因此在这里,首先建立一个StudentService类,在其中定义好添加学生的方法,然后在StudentController中调用即可
(8)对添加的属性进行验证,比如在数据库中插入学生信息时,学号不得小于“20110001”。
对原代码做以下修改:
a)在Student实体类的sno属性上加@Min关键字(value为最小值、message为提示信息);
b)将StudentController.java中的addStudent方法的参数修改为Student对象,这样可以使对象属性增多时不用修改此处的代码,同时在参数前加@Valid注解,表示对该参数进行验证,验证返回的参数BindingResult。
参考资料:http://www.imooc.com/learn/767