Spring Boot干货——(七)Spring Boot整合Spring Data JPA
来源:互联网 发布:云脉文档识别 mac 编辑:程序博客网 时间:2024/05/18 02:19
前言
Spring Data JPA对大家来说相对比较陌生,尤其是在一些传统互联网行业工作的人。一方面现在mybatis整合Spring和SpringMVC如火如荼,遮盖住了Spring Data的锋芒,另一方面不少公司的管理层为了项目稳定不太喜欢用不熟悉的工具,就这样Spring Data变得有些悲剧,不过用过Spring Data的人一定会深深的爱上他的,因为他真的实在是太方便了,尤其是在Spring整合中。下面我们就来详细介绍一下Spring Boot整合Spring Data JPA。
优点:
1.自动通过代码创建数据库;
2.部分常用的sql语句不需要自己编写,大大提高了开发效率;
正文
接口继承关系图
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency><!-- 数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency>
项目结构图
Application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.username = rootspring.datasource.password = XXXXXXXspring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.jpa.properties.hibernate.hbm2ddl.auto=updatelogging.file=/log/springBootTest.logserver.port=8090
注意,如果通过jpa在数据库中建表,将jpa.hibernate,ddl-auto改为create,建完表之后,要改为update,要不然每次重启工程会删除表并新建。
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构。该参数的几种配置如下:
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
Bean
package com.gwd.domain;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.*;//@Table(name="User")//用来绑定表名,如果表名与bean名称本身一致,那么可以不用@Entitypublic class User {@Id@GeneratedValue private Integer id;@Column(nullable=false) private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); }}
package com.gwd.dao;import java.util.List;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query;import com.gwd.domain.User;public interface StuMapper extends JpaRepository<User, Integer>{@Query("select u from User u where id =?1")List<User> findUserById(Integer id);}
这块需要注意:spring data jpa 默认预先生成了一些基本的CURD的方法,例如:增、删、改等等,
简单条件查询
按照 Spring Data的规范,查询方法以 find | read | get开头,
涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。
例如:定义一个 Entity实体类
class User{
private StringfirstName;
private StringlastName;
}
使用And条件连接时,应这样写:
findByLastNameAndFirstName(String lastName,String firstName);
条件的属性名称与个数要与参数的位置与个数一一对应
分页查询
分页查询在实际使用中非常普遍了,spring data jpa已经帮我们实现了分页的功能,在查询的方法中,需要传入参数Pageable
,当查询中有多个参数的时候Pageable建议做为最后一个参数传入
,当查询中有多个参数的时候Pageable建议做为最后一个参数传入
StuServiceImpl
public Page<User> queryPage(int page, int size, Sort id) { Sort sort = new Sort(Direction.DESC, "id"); Pageable pageable = new PageRequest(page, size, sort); Page<User> findALL = stuMapper.findALL(pageable);return findALL;}
Controller
@RequestMapping("/getPage")public void testPage() {Sort sort = new Sort(Direction.DESC, "id");Page<User> page = stuService.queryPage(1, 2, sort);System.out.println("当前总记录数"+page.getTotalElements());System.out.println("当前页面的记录数"+page.getNumberOfElements());System.out.println("总页数"+page.getTotalPages());System.out.println("当前页面的List"+page.getContent());System.out.println("当前页码"+(page.getNumber()+1));}
阅读全文
0 0
- Spring Boot干货——(七)Spring Boot整合Spring Data JPA
- spring boot 整合 spring data jpa
- spring boot 整合spring data jpa
- spring boot 整合spring data jpa
- spring-boot-data-jpa
- Spring Boot干货——(六)SpringBoot整合mybatis
- Spring Boot整合Spring Data
- Spring Boot+Spring Data JPA+Spring Cache
- spring boot集成data-jpa
- spring-boot(二) 整合jpa
- Spring Boot中使用Spring-data-jpa
- spring boot 使用spring data jpa
- spring boot 使用 spring data jpa
- Spring Boot中使用Spring-data-jpa
- spring boot and spring data jpa
- 《spring-boot学习》-07-spring data jpa
- spring boot中使用spring-data-jpa
- Spring Boot中使用Spring-data-jpa
- Mybaities 批量操作数据库报错,抛MySQLSyntaxErrorException异常
- 欢迎使用CSDN-markdown编辑器
- Leetcode35.Search Insert Position
- Java中Arrays工具类的用法
- Util工具类 获取指定月份的天数以及最后一天的日期
- Spring Boot干货——(七)Spring Boot整合Spring Data JPA
- 浅析java内存模型--JMM(Java Memory Model)
- 第2章 控制器 第3章 视图(强类型视图,视图模型、Razor 视图引擎、布局、Html.Partial与Html.Action)
- Node.js中exports和module.exports的联系和区别
- 面试Java需要的知识总结(具体见地址)
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】
- 小程序openid是在服务器端获得的
- 验证身份证的方法
- spring注解@Profile的使用案例,并注解测试用例演示,根据不同的条件实例化不同的bean