Spring Data Jpa

Spring Data Jpa


前言

  1. spring data 的使命是为数据访问提供熟悉且一致的基于 Spring 的编程模型,同时仍保留底层数据存储的特​​殊特征。

  2. 它使使用数据访问技术、关系和非关系数据库、map-reduce框架和基于云的数据服务变得容易。这是一个伞形项目,其中包含许多特定于给定数据库的子项目,Spring Data Jpa就是其中的一个子项目。

  3. 以下代码以操作MySQL数据库为例

  4. 做的不好的地方,还请各位大佬指正


一、使用步骤

1.依赖包

代码如下:

<!--使用springboot2.0.1-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <dependencies>
        <!--配置jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.0.1.RELEASE</version>
            <!--这里使用druid连接池,所以排除默认连接池HikariCP-->
            <exclusions>
                <exclusion>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <!--springboot测试包-->
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <!--springboot web包-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <!--数据库操作包-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>

        <dependency>
            <!--springboot整合druid包-->
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

2.使用步骤

  1. 首先建立一个类映射MySQL表

    @Entity
    @Table(name="MySQL_Table_Name")	
    public class MyClass {
    @Id
    @Column(length = 32)
    private String id;
    private String name;
    private String sex;
    
    
  2. 在DAO层使用代理对象

    代码如下:

    public interface MyClassRepository extends JpaRepository<MyClass,String> {
     String findBySex(String name);
    }
    
  3. 在service层使用
    代码如下:

    @Service
    public class MyClassService {
        @Autowired
        MyClassRepository myClassRepository;
        public List<MyClass> findAll(){
    
            MyClass myClass=new MyClass("1","test","man");
    
    //        myClassRepository的保存用法
            myClassRepository.save(myClass);
    //        findBySex只是在MyClassRepository接口中生命了并未具体实现,但在这里可以直接调用本方法实现
    //        按照姓名查找性别,这就是spring data jpa的神奇之处,但复杂的多表查询则需使用其他技术实现
            String bySex = myClassRepository.findBySex(myClass.getName());
            System.out.println(bySex);
            return myClassRepository.findAll();
        }
    
    }
    
    
    
  4. 在controller层调用service

   @RestController
   @RequestMapping("/myclass")
   public class MyClassController {
       @Autowired
       MyClassService myClassService;
   
       @GetMapping("/listall")
       public List<MyClass> findList(){
   
           return myClassService.findAll();
       }
   }
  1. 启动类
@SpringBootApplication
@EntityScan("com.damo.model")

public class ManageDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ManageDemoApplication.class, args);

    }
}
  1. 配置文件
server:
  port: 8080
spring:
  datasource:
  <!--druid连接池配置-->
    druid:
        url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
        username: root
        password: root
        driverClassName: com.mysql.jdbc.Driver
        initialSize: 5  #初始建立连接数量
        minIdle: 5  #最小连接数量
        maxActive: 20 #最大连接数量
        maxWait: 10000  #获取连接最大等待时间,毫秒
        testOnBorrow: true #申请连接时检测连接是否有效
        testOnReturn: false #归还连接时检测连接是否有效
        timeBetweenEvictionRunsMillis: 60000 #配置间隔检测连接是否有效的时间(单位是毫秒)
        minEvictableIdleTimeMillis: 300000

7.运行结果
启动启动类ManageDemoApplication,在浏览器中浏览http://localhost:8080/myclass/listall出现如下响应

在这里插入图片描述
则成功运行


总结

  1. 主要spring data jpa用法在dao层定义,service中实现
  2. 在使用代理对象MyClassRepository 继承接口JpaRepository时必须指定类名和查询条件类型(在这里是String类型),而类名为数据库表对应的类名
  3. 使用MyClassRepository 操作数据库表数据时直接采用驼峰命名法操作表对应字段。
  4. 一般都是配合springboot框架使用spring data jpa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值