Spring Boot 系列(九)数据层-集成Spring-data-jpa
来源:互联网 发布:杨氏模量测定实验数据 编辑:程序博客网 时间:2024/06/04 01:17
实际开发中,不可避免地会对数据进行反复的增删改查操作,然而这部分工作是十分繁琐枯燥的。那么,随即而生的ORM框架就能很好的解决这个问题。
我们常用的ORM框架有:Hibernate、Mybatis、Jpa 等。本文介绍SpringBoot 中集成 Jpa 框架。
集成 JPA (Java Persistence API) ,持久层框架。
Spring-data-jpa 依赖于 Hibernate,对Hibernate有一定的了解有助于使用JPA框架。
一、pom.xml添加依赖
<!-- mysql数据库驱动 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version></dependency><!-- 数据层 Spring-data-jpa --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
查看spring-boot-starter-data-jpa的具体依赖,可以发现有依赖hibernate
二、配置数据库连接信息
#数据库配置spring.datasource.url=jdbc:mysql://localhost:3306/springbootspring.datasource.username=rootspring.datasource.password=spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.jpa.properties.hibernate.hbm2ddl.auto=update
如果你熟悉hibernate,那么会清楚spring.jpa.properties.hibernate.hbm2ddl.auto 的作用
# 配置指定对数据库表结构的处理方式,值有:create、create-drop、update、validate ## create:每次加载hibernate的时候,都会重新根据模型生成表。如果表已存在,会先删除该表再生成。# create-drop:启动项目加载hibernate的时候,会生成表。停止项目时,会把生成的表删除掉。# update:常用属性。每次加载hibernate的时候,会生成表。如果表存在,会根据模型的属性变化来更新表结构,这个过程不会做删表处理。# validate:每次加载hibernate的时候,会检查表结构,但不会生成表。
三、创建实体类,并使用注解进行映射。
package com.sam.demo.domain;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;/** * @author sam * @since 2017/7/18 */@Entity@Table(name = "t_person") //指定表名public class Person { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; @Column private int age; // getter & setter}
四、创建 PersonRepository 接口 继承 JpaRepository
package com.sam.demo.repository;import com.sam.demo.domain.Person;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query;import org.springframework.data.repository.query.Param;/** * @author sam * @since 2017/7/18 */public interface PersonRepository extends JpaRepository<Person, Long> { Person findByName(String name); Person findByNameAndAge(String name, int age); @Query("FROM Person p WHERE p.id=:id") Person findPersonById(@Param("id") Long id);}
PersonRepository 继承了 jpa提供的 JpaRepository。查看JpaRepository可以发现,已经封装好了基本的增删改查操作,直接使用即可。
除了默认提供的增删改成之外,jpa 还提供了极其简便的方式来自定义查询等方法(不需要编写任何sql语句):
如上面的 Person findByName(String name) 方法,JPA 会根据方法名(驼峰式),解析出相应的sql语句进行具体的查询操作。
当我们需要执行复杂的语句的时候,我们还可以使用 @Query() 创建自定义sql语句查询:
@Query(“FROM Person p WHERE p.id=:id”),查询语句与hibernate的HQL语句相同,可以通过 :id 来绑定 @Param(“id”) 的参数。
五、controller 中使用 PersonRepository
package com.sam.demo.controller;import com.sam.demo.domain.Person;import com.sam.demo.repository.PersonRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;/** * @author sam * @since 2017/7/16 */@RequestMapping("/person")@RestControllerpublic class PersonController { @Autowired private PersonRepository personRepository; @RequestMapping(method = RequestMethod.GET) public Person index() { Person person = new Person(); person.setName("sam"); person.setAge(25); //保存person personRepository.save(person);// Person temp = personRepository.findPerson(1l); Person temp = personRepository.findByName("sam"); return temp; }}
访问:http://localhost:8080/person 正确返回:
{"id":1,"name":"sam","age":25}
到此,基本完成了Spring Boot 集成 Spring-data-jpa 框架。
Spring-data-jpa 详细使用请参考:Spring Data JPA 官方文档
版权声明:本文为博主原创文章,转载请注明出处。
阅读全文
1 0
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
- spring boot集成data-jpa
- Spring Boot集成Spring Data Jpa
- 从零开始学spring-boot(2)-集成spring-data-jpa
- 从零开始学spring-boot(2)-集成spring-data-jpa
- spring-boot 集成jpa 持久层
- spring-boot-data-jpa
- spring-boot集成JPA
- Spring Boot系列(五):spring data jpa的使用
- Spring Data 系列(二) Spring+JPA入门(集成Hibernate)
- Spring Boot+Spring Data JPA+Spring Cache
- Spring Boot集成Spring Data
- Spring Boot系列(九) Spring Boot集成Sorl搜索客户端
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- 6.2 Spring Boot集成jpa
- springboot集成spring-data-jpa
- Spring Boot 之 Spring Data JPA(牛刀小试)
- spring boot(二)spring data jpa以及事物配置
- mysql中使用list作为参数插入数据库
- java.lang.IllegalArgumentException: Wrong state class, expecting View State but received
- 图表
- Qt获取文件夹下所有文件
- 正则表达式验证密码:数字+英文的组合
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
- 守破离——编程的三种境界
- spring配置多个mysql数据库
- MySql高性能笔记
- Install Composer on Ubuntu 14.04
- 树莓派系统的备份
- UI布局之LinearLayout线性布局
- Android日志系统驱动程序Logger源代码分析
- 格列佛游记思维导图