Springboot整合SpringDataJpa入门篇(一)
-
- spring-data-Jpa简介 首先我们已经知道JPA(Java Persistence API),中文名是Java 持久层 Api,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。它的诞生是为了整合第三方ORM框架,建立统一的标准。ORM框架中最著名的就是Hibernate,在mybaits没有流行之前,Hibernate是程序员最喜欢用的持久层框架之一,功能也非常强大。而事实上,Jpa的实现都是用Hibernate做的。spring-data-jpa又是什么呢?从名字就可以看出是spring和JPA的整合。使用spring-data-jpa最大的好处在于,我们在进行开发的过程中,常用的功能,我们几乎不需要写一条sql语句。下面开始介绍springdatajpa的使用方法:
- spring-data-Jpa
- 在pom文件中引入依赖
<!--springdatajpa依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.3.RELEASE</version> </dependency> <!--mysql 依賴--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
- 在application.properties中加入连接数据库的条件,我这里使用的是MySQL。
server.port=8081 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #配置自动建表 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
- 接下来是写持久层的代码,很简单只有实现JpaRepository接口就可以实现基本的查询功能,其中Student是实体类,Integer是主键的类型
public interface StudentRepository extends JpaRepository<Student,Integer> { }
Student.java的代码。@Entitry表示该类是实体类,@Table在MySQL创建的表名,项目一启动就会自动创建,@Data需要引入lombok,这里我是为了方便,可以不用写get/set方法。
@Data @Entity @Table(name = "tb_student") @Component public class Student { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id ; @Column(name = "name",length = 50) private String name; @Column(name = "email",length = 100) private String email; }
controller层代码,我是跳过了业务层直接跳持久层了,当然实际开发是不会这样的。
@RestController public class StudentController { @Autowired StudentRepository studentRepository; @Autowired Student student; @RequestMapping("/getAll") public List<Student> queryStudent(){ List<Student> list = new ArrayList<>(); list = studentRepository.findAll(); return list ; } @RequestMapping("/getByID") public Optional<Student> queryStudentbyid() { List<Student> list = new ArrayList<>(); Optional<Student> student= studentRepository.findById(1); return student; } @RequestMapping("/add") public Student addStudent(){ student.setId(121111); student.setEmail("wewsdsdfs"); student = studentRepository.save(student); return student; } }
在浏览器访问的结果
"id":1,"name":"qinda","email":"1214111520@qq.com"},{"id":2,"name":"haha","email":"121"},{"id":3,"name":null,"email":"wewsdsdfs"}]
-