SpringData JPA只是Spring Data中的一个子模块,JPA是一套标准接口。而Hibernate是JPA的实现,Spring Data JPA 底层默认实现是使用Hibernate。Spring Data JPA 的首个接口就是 Repository,它是一个标记接口。只要咱们的接口实现这个接口,那么咱们就至关于在使用 Spring Data JPA了。html
<!-- SpringBoot依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependency> <!-- 引入lombok 依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <!--Web必要的--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--spring data jpa--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- MySQL的java依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
#服务端容器的配置 server: port: 8218 tomcat: uri-encoding: UTF-8 servlet: context-path: / #数据库配置 url: 数据库登陆地址 username: #数据库登陆帐号 password: #数据库登陆密码 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: # 其主要做用是:自动建立、更新、验证数据库表结构 # ddl-auto: create ## 每次加载hibernate时都会删除上一次的生成的表,而后再从新来生成新表,哪怕两次没有任何改变也要这样执行 # ddl-auto: update ## 第一次加载hibernate时根据model类会自动创建起表的结构(前提是先创建好数据库), ## 之后加载hibernate时根据model类自动更新表结构,即便表结构改变了但表中的行仍然存在不会删除之前的行。 ## 要注意的是当部署到服务器后,表结构是不会被立刻创建起来的,是要等应用第一次运行起来后才会。 ddl-auto: validate ## 每次加载hibernate时,验证建立数据库表结构,只会和数据库中的表进行比较,不会建立新表,可是会插入新值 # ddl-auto: none ## 启动时不作任何操做 naming: strategy: org.hibernate.cfg.ImprovedNamingStrategy # 生成的数据表的列的映射策略 physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl show-sql: true
@Entity @Table(name = "sys_upms_user") @Data public class User { @Id // 说明该属性做为该表的主键 @Column(name = "id", unique = true, nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column private String userName; @Column private String password; @Column private Integer creator; @Column private Date createTime; @Column private Integer modifier; @Column private Date updateTime; @Column private String remark; }
JPA规范注解坐落在javax.persistence
包下,@Id注解必定不要引用错了,不然会报错。@GeneratedValue(strategy = GenerationType.IDENTITY)自增策略,不须要映射的字段能够经过@Transient注解排除掉java
常见的几种自增策略mysql
建立UserRepository数据访问层接口,须要继承JpaRepository<T,K>web
public interface UserRepository extends JpaRepository<User, Integer> { }
第一个泛型是写实体类的类型,第二个泛型是主键的类型
public interface UserService { List<User> getUserList(); }
@Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public List<User> getUserList() { return userRepository.findAll(); } }
@RestController public class UserController { @Autowired private UserService userService; @RequestMapping("getUser") public List<User> getUserList() { return userService.getUserList(); } }
启动SpringBoot项目:spring
咱们发现使用 springBoot+Spring Data JPA 的方式,不须要不少的配置,更不须要不少的代码就能从数据库中查询到数据。这里仅仅只是入门学习,针对的是对Sprng Data JPA 不太熟悉的,若是想要深刻了解,更多内容请参考官方文档。sql