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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初识公有云和私有云

    初识公有云和私有云最近刚开始接触云,粗浅记录下来自己的学习。第一个问题:什么是云计算?第二个问题:为什么要上云?第三个问题:公有云和私有云有什么区别,应该怎么选?云计算,是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。【百度百科】举例来讲,建立一个超级数据中心,提高算力,达到普通电脑无法企及的每秒10万亿次的运算能力,一般用户在付费后则可通过

    2022年6月25日
    24
  • arp病毒查杀_arp病毒攻击有哪些典型现象

    arp病毒查杀_arp病毒攻击有哪些典型现象XX公司网络卡断问题1.问题现象2017年XX公司机关网络出现几次异常情况,并寻求内外部专家对异常情况进行诊断分析,均未找到原因,具体情况如下:1.XX分公司机关网络IP地址为10.0.0.1

    2022年8月5日
    4
  • log4j.properties连接到数据库中

    log4j.properties连接到数据库中

    2021年4月26日
    178
  • Android使用ViewPager实现左右循环滑动及轮播效果

    边界的时候会看到一个不能翻页的动画,可能影响用户体验。此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其

    2021年12月27日
    44
  • CSS3 opacity 属性

    CSS3 opacity 属性设置div元素的不透明级别1、属性opacity属性指定了一个元素的透明度。换言之,opacity属性指定了一个元素后面的背景的被覆盖程度。当opacity属性的值应用于某个元素上时,是把这个元素(包括它的内容)当成一个整体看待,即使这个值没有被子元素继承。因此,一个元素和它包含的子元素都会具有和元素背景相同的透明度,哪怕这个元素和它的子元素有不同的opacity属性值。2、语法op…

    2022年5月9日
    43
  • 超硬核!小白读了这篇文章,就能在算法圈混了[通俗易懂]

    作为一只超级硬核的兔子,从来不给你说废话,只有最有用的干货!这些神级算法送给你目录第一节1.1bogo排序1.2位运算1.3打擂台1.4morris遍历第二节2.1睡眠排序2.2会死的兔子2.3矩阵快速幂2.4摔手机/摔鸡蛋时空复杂度目录二分尝试较优的策略归纳表达式写出暴力递归改为动态规划压缩空间四边形不等式优化换一种思路最优解测试:第三节3.1斐波那契之美3.2桶排序3.3快速排序…

    2022年4月17日
    44

发表回复

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

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