spring boot 系列之四:spring boot 整合JPA[通俗易懂]

上一篇我们讲了springboot整合JdbcTemplate来进行数据的持久化,这篇我们来说下怎么通过springboot整合JPA来实现数据的持久化。一、代码实现二、知识点引申关于

大家好,又见面了,我是全栈君。

上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化,

这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化。

一、代码实现 

  1. 修改pom,引入依赖
      <!-- 引入jpa 依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>

  2. 修改application.properties,配置相关信息
    #修改tomcat默认端口号
    server.port=8090
    #修改context path
    server.context-path=/test
    
    #配置数据源信息
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=root
    #配置jpa
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    spring.jackson.serialization.indent_output=true

  3. 创建实体类
    package com.study.entity;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="t_user")
    public class User {
    
        @Id @GeneratedValue(strategy=GenerationType.AUTO)
        private Integer id;
        private String userName;
        private String password;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    }

  4. 创建repository接口并继承CrudRepository
    package com.study.repository;
    
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.data.repository.query.Param;
    
    import com.study.entity.User;
    
    /**
     * 注意:
     * 1.这里这里是interface,不是class
     * 
     * 2.CrudRepository里面的泛型,第一个是实体类,第二个是主键的类型
     * 
     * 3.由于crudRepository 里面已经有一些接口了,如deleteAll,findOne等, 我们直接调用即可
     * 
     * 4.当然,我们也可以根据自己的情况来实现自己的接口,如下面的getUser()方法,jpql语句和hql语句差不多
     * 
     * */
    public interface UserRepository extends CrudRepository<User, Integer> {
    
        /**
         * 我们这里只需要写接口,不需要写实现,spring boot会帮忙自动实现
         * 
         * */
        
        @Query("from User where id =:id ")
        public User getUser(@Param("id") Integer id);
    }

  5. 创建service
    1. 接口
      package com.study.service;
      
      import com.study.entity.User;
      
      
      public interface UserService {
          public User getUser(Integer id);
      }

    2. 实现
      package com.study.service.impl;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      import com.study.entity.User;
      import com.study.repository.UserRepository;
      import com.study.service.UserService;
      
      @Service
      public class UserServiceImpl implements UserService {
      
          @Autowired
          UserRepository repository;
          
          @Override
          public User getUser(Integer id) {
              //有两种方式:
              //1.调用crudRepository的接口
      //        return repository.findOne(id);
              //2.调用我们自己写的接口
              return repository.getUser(id);
          }
      
          
      }

  6. 创建controller
    package com.study.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.study.entity.User;
    import com.study.service.UserService;
    
    @RestController
    public class UserController {
        @Autowired
        UserService service;
        
        @RequestMapping("/getUser/{id}")
        public User getUser(@PathVariable("id") Integer id){
            
            return service.getUser(id);
        }
    }

  7. 测试,页面以json格式显示数据库值

    spring boot 系列之四:spring boot 整合JPA[通俗易懂]

二、知识点引申

关于Repository知识点,可以去看下下面这篇文章

https://segmentfault.com/a/1190000012346333

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120913.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 代码走查总结[通俗易懂]

    代码走查总结[通俗易懂]什么是代码走查代码走查就是,项目开发人员在一起,对代码进行讨论。项目开发人员可以向大家阐述代码的逻辑和写代码的思路!在向别人阐述的时候,会发现做自己写的代码出现的一些问题。收获我进行代码阐述的时候,是按照功能来进行的,在阐述的过程中,我能感觉到我自己是清楚这个逻辑思路的,但是说着说着就发现了一些说不通的地方,还有一些不合理的地方。这让我突然想到了,之前出现的一个bug但是,死活不知道是…

    2025年7月31日
    0
  • springboot下使用拦截器和过滤器[通俗易懂]

    springboot下使用拦截器和过滤器[通俗易懂]1.拦截器InterceptorSpringMVC的拦截器(Interceptor)和Filter不同,但是也可以实现对请求进行预处理,后处理。先介绍它的使用,只需要两步:1.1实现拦截器实现拦截器可以自定义实现HandlerInterceptor接口,也可以通过继承HandlerInterceptorAdapter类,后者是前者的实现类。如果preHandle方法ret…

    2022年7月17日
    15
  • xps 转 pdf android版,OakDoc XPS to PDF Converter(XPS文件转PDF格式工具)V2.2 正式版

    xps 转 pdf android版,OakDoc XPS to PDF Converter(XPS文件转PDF格式工具)V2.2 正式版OakDocXPStoPDFConverter(XPS文件转PDF格式工具)是一款很优秀好用的XPS转PDF的辅助工具。如果你需要一款好用的文件转换工具,小编带来的这款OakDocXPStoPDFConverter软件是很不错的选择,功能强大全面,使用后可以帮助用户轻松将XPS文件转换成PDF格式。软件可帮助用户通过简单的方式将XPS文件转换输出为PDF为主的主流图片格式。该工具的…

    2022年5月4日
    51
  • return跳出循环[通俗易懂]

    return跳出循环[通俗易懂]return语句用于终止函数的执行或退出类的方法,并将控制权返回该方法的调用者。如果这个方法带有返回类型,return语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达值return;该方法用处之一:循环找出条件/答案,如果循环结束答案没有找到就执行下面的语句如果找到答案,那就直接将方法抛弃。可以这么理解:一个女人和男人谈恋爱,一心只为钱,而且是不停的找钱1.当钱到手,…

    2022年5月7日
    54
  • pycharm2021年激活码刚出 3月最新注册码

    pycharm2021年激活码刚出 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    44
  • vs python生成exe文件_使用VScode编写python程序并打包成.exe文件

    vs python生成exe文件_使用VScode编写python程序并打包成.exe文件据说VisualStudioCode(VSCode)的诸多好处,了解了一下果然很喜欢,我喜欢它的原因主要有3个,一是VSCode开源且跨平台,二是因为其界面非常酷,三是可以满足我的大所属代码需求,除此之外当然还有强大的好奇心。使用VScode编写第一个Python程序“one.py”,并将其打包成.exe文件。演示使用的程序版本:python36,VScode1.27.1,pyinstal…

    2022年5月15日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号