《深入理解Spring Cloud与微服务构建》学习笔记(五)~SpringBoot 整合 JPA

JPA是一个数据持久化的类和方法的集合,目前java项目开发中提到的JPA一般是指用Hibernate的实现,因为在java的ORM框架中,只有Hibernate实现的最好。当前学习在SpringBoot项目中使用JPA,数据库使用mysql。

一、新建一个SpringBoot项目,在pom.xml中引入jpa的依赖,和mysql数据库连接器的依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>


也可以在创建项目的时候选择模块,此处会自动加入依赖,如:

二、配置数据源,在application.yml中进行配置,基础的配置都比较容易看懂,除了url、username、password需要调整,其他都是不用改的。

######数据库连接配置#################
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/img_o2o?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

   #hikari 数据源配置
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
   #JP相关
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: create


三、创建实体对象:通过@Entity注解表明该类是一个实体类,它和数据库表明是对应的。@Id注解表明该变量对应数据库的id,@GeneratedValue注解配置id字段为自增长,@Column注解表明该变量对应数据库表中的字段。还有很多注解属性,后面用到了可以进行实践。


@Entity
public class JpaUser {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id ;

    @Column
    private String username ;

    @Column
    private String password ;

    //略过get、set
}

此时启动服务,会看到控制台会有生成表的sql,如:

再看数据库,也生成了对应的表,说明我们第一步成功了,如:

四、创建DAO层
   创建一个DAO类,继承JpaRepository接口,继承之后就能对数据库进行读写操作,包含基本的单表查询方法,。在 Dao 类写 findByUsername 的方法,传入参数 usemame, JPA 已经实现了根据某个字段去查找的方法 所以该方法可以根据 usemame 字段从数据库中获取 User 的数据,不需要做额外的编码。如:

五、创建Service层
   创建一个Service类,并注入dao,写一个根据用户名查询用户的方法:

六、创建Controller层
     新建一个Controller类,写一个Get类型的api接口,接收参数username,通过@PathVariable注解获取RESTurl路径上的参数:

重新启动应用,手动的在数据库添加一些数据,在浏览器输入:
http://localhost:8080/user/test    最后一个参数为数据库存在的username 


可以看到输入test,可以查到数据库test这一条信息,并且输出json对象。

demo代码:https://download.csdn.net/download/ssdate/10731151  (demo里的代码跟文章稍有变动)

也可以移步至码云:https://gitee.com/ssdate/spring-test 

猜你喜欢

转载自blog.csdn.net/ssdate/article/details/83150642