ali是个小太阳的博客

但行好事,莫问前程; 不忘初心,方得始终。 ---java女汉纸【邮箱:1370157581@qq.com】...

SpringBoot入门:SpringBoot的数据库操作:spring-data-jpa的使用







想要使用数据库,需要添加2个组件:

在pom里面添加2个jar包:
spring-boot-starter-data-jpa和mysql-connector-java

                <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>





======================================

然后配置属性:

这里我们选择yml风格的配置:

我们创建3个yml配置:

application.yml【这是用来设置共同的配置,在这里面可以设置选择哪种环境】

application-dev.yml【这是开发环境配置】

application-prod.yml【这是生产环境配置】


application.yml共同属性:

spring:
  profiles:
    active: dev
#    active: prod
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgirl
    username: root
    password: 123456
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

ddl-auto是属于:
hibernate里面的内容,

不止这一种属性:ddl-auto: create

还有:
create: 
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。 
create-drop : 
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。 
update: 
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。 
validate : 
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value=”none”。 



特别注意:
如果设置成auto参数,那每次重启之后:数据库只有表结构!没有数据!

你可以尝试一下,在自动生成的表里面添加一些数据,重启之后刷新一下,全部都是null!之前的数据,全都被null覆盖了!


总结:
1.请慎重使用此参数,没必要就不要随便用。
2.如果发现数据库表丢失,请检查hibernate.auto的配置

============================================


dev开发环境:

application-dev.yml


server:
  port: 8081

girl:
  cupSize:  B
  age:  18




prod生产环境:

application-prod.yml

server:
  port: 8082

girl:
  cupSize:  F
  age:  20

=====================

然后在数据库里面新建一个数据库dbgirl

注意:只需要建一个数据库,空的即可!不需要建表!


接下来,我们新建一个类,使用类加注解,自动生成数据库表

Girl

package com.imooc;

import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;

@Entity
public class Girl {
    @Id
    @GeneratedValue
    private Integer id;
    private String cupSize;
    private Integer age;

    public Girl() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
//注意:这个@Id一定不要导错包了!否则浪费了半天时间还找不到错误所在!
//需要导的包是import javax.persistence.Id;!!!!!
//这个类是用来自动生成数据库表的!
//前提条件是:
// 1,需要在pom文件里面添加2个jar包:spring-boot-starter-data-jpa和mysql-connector-java
// 2,要先新建一个数据库,空的即可。
// 3,需要在配置文件里面指定数据库信息(驱动,url,username,password)
//只要按照上面的方法执行就可以成功!
//重要的事情再说一遍:@Id需要导的包是import javax.persistence.Id;!!!!!



注意事项:

//这个@Id一定不要导错包了!否则浪费了半天时间还找不到错误所在!
//需要导的包是import javax.persistence.Id;!!!!!
//这个类是用来自动生成数据库表的!
//前提条件是:
// 1,需要在pom文件里面添加2个jar包:spring-boot-starter-data-jpa和mysql-connector-java
// 2,必须要先新建一个数据库,空的即可。
// 3,需要在配置文件里面指定数据库信息(驱动,url,username,password)
//只要按照上面的方法执行就可以成功!
//重要的事情再说一遍:@Id需要导的包是import javax.persistence.Id;!!!!!

然后重新运行程序!

打开数据库,刷新之后:



成功!

===================================



首先,创建一个类GirlRepository (数据访问层类似dao,文末有详细解释

package com.imooc;

import org.springframework.data.jpa.repository.JpaRepository;

public interface GirlRepository extends JpaRepository<Girl,Integer> {
}

然后再创建一个类GirlController

package com.imooc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class GirlController {
    @Autowired
    private GirlRepository girlRepository;
    @GetMapping(value = "/girls")
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }
}

然后重启运行:


因为数据库里面没有数据所以显示的空。

接下来,我们可以在数据库里面他添加一些数据:


然后,重启程序:


下面专门写一下增删查改:

继续操作GirlController


==============================================

附录

相关解释:

什么是Repository? 
2.1 Repository(资源库):通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调。这个叫法就类似于我们通常所说的DAO,在这里,我们就按照这一习惯把数据访问层叫Repository 
Spring Data给我们提供几个Repository,基础的Repository提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别 
CrudRepository: 继承Repository,实现了一组CRUD相关的方法 
PagingAndSortingRepository: 继承CrudRepository,实现了一组分页排序相关的方法 
JpaRepository: 继承PagingAndSortingRepository,实现一组JPA规范相关的方法 
JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPA Criteria查询相关的方法 
我们自己定义的XxxxRepository需要继承JpaRepository,这样我们的XxxxRepository接口就具备了通用的数据访问控制层的能力。 

参考资料:

APPLE框架之高效便捷的Repository解决方案



阅读更多
想对作者说点什么? 我来说一句

springboot经典入门

2017年09月21日 33KB 下载

SpringBoot基础入门demo

2017年10月23日 77KB 下载

springboot系统学习

2018年05月14日 715KB 下载

springboot HelloWorld

2018年02月26日 12KB 下载

Springboot使用JPA操作数据库

2018年04月22日 24KB 下载

springboot入门代码

2017年11月06日 11.97MB 下载

没有更多推荐了,返回首页

不良信息举报

SpringBoot入门:SpringBoot的数据库操作:spring-data-jpa的使用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭