Spring data JPA的基本使用把你难到了吗?

这篇具有很好参考价值的文章主要介绍了Spring data JPA的基本使用把你难到了吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 故事背景

最近有已经工作的学员跟文哥聊天,说他刚进公司,人生地不熟,每天工作都是战战兢兢,如履薄冰。本来他觉得自己用的最6的技术就是文哥教给他的Mybatis了,本以为靠着Mybatis就可以养家糊口,赚点血汗钱了。结果发现大家用的都是Spring Data JPA!!!他顿时虎躯一震,菊花一紧,赶紧跑来问文哥,要不要跑路,另找下家???

这还得了,难道就因为小小的一个JPA不会用就想跑路?顿时气的文哥差点喷出一口老血!待冷静过后,思考再三,文哥认为既然外面还是有企业在用Spring Data JPA的,所以在这里文哥就普及一下Spring Data JPA的基本使用。

二. JPA简介

那啥是Spring Data JPA呢?

我们来翻看一下Spring的官网,Spring Data JPA是Spring Data家族的一部分,作者的初衷是想开发者通过Spring Data JPA的使用来极大的简化对数据持久层的开发。好了,废话不多说,我们直接开始盘它!!!

三. 创建Maven项目

我们直接创建一个基于Springboot的Maven工程。

1. 引入相关依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
    <relativePath/> 
</parent>

<dependencies>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.23</version>
    </dependency>

    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
</dependencies>

看到没有,文哥在pom.xml文件里面引入了lombok依赖,建议小伙伴把这个插件下载下来,用起来真的美滋滋~~~

2. 编写启动器

@SpringBootApplication
public class SpringDataJpaApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringDataJpaApplication.class,args);
    }
}

3. 编写application.yml配置文件

server:
  port: 8071
spring:
  application:
    name: service-user
  datasource:
    driver-class-namecom.mysql.jdbc.Driver
    urljdbc:mysql://192.168.10.139:3306/jpa
    usernameroot
    passwordAdmin123!
    typecom.alibaba.druid.pool.DruidDataSource
  jpa:   #springdataJpa配置
    properties:
      hibernate:
        hbm2ddl:
          autoupdate  #jpa自动创建数据表,如果表已经存在,则不再创建
        dialectorg.hibernate.dialect.MySQL5InnoDBDialect  #指定数据表引擎 InnoDB

4. 编写pojo实体类

@Entity(name = "user")//实体类和数据表的对应关系
@Data //不用写get set方法了
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) //主键自增长
    private Integer uid;//主键
    private String username;//用户名
    private String password;//密码
    private String telephone;//手机号
}

注意:这里有很多注解,文哥在这里给大家解释一下:

  • @Data: 给实体类加get/set/toString/Equals AndHashCode方法,是lombok的注解。

  • @Entity:指定当前类是实体类。

  • @Id: 指定当前字段是主键。

  • @GeneratedValue:指定当前主键的生成方式。

文哥解释之后,这几个注解理解起来是不是就非常简单了呢?

pojo实体编写完成以后,你就可以启动你的项目了,此时你会发现非常有意思的事情,当你打开数据库,你会发现:

Spring data JPA的基本使用把你难到了吗?

你发现,Spring Data JPA会根据实体类帮助我们自动的生成数据表!!!是不是很方便。

5. 编写dao接口

这里便是整个spring-data-jpa中最令人虎躯一震的地方!令人震惊!!!一个接口居然可以实现常用的所有操作!(是不是和mybatisplus有点类似???)

public interface UserDao extends JpaRepository<UserInteger> {
}

你以为我们的杰作才开始吗?不,已然结束了。

至此我们就可以看到,这个接口继承了JpaRepository<实体,ID>,spring-data-jpa只需要这个信息,就可以帮你完成常用的操作:增删查改。

今天文哥就不再具体讲解JpaRepository中所包含的所有方法了,这里只把最简单的增删查改来给大家介绍一下,如果你想了解更多,可以来线下班里找文哥。

6. 编写service

public interface UserService {

    public void addUser(User user);

    public void updateUser(User user);

    public void deleteUserById(Integer id);

    public User findUserById(Integer id);

    public List<User> findAll();
}
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserDao userDao;

    @Override
    public void addUser(User user) {
        userDao.save(user);
    }

    @Override
    public void updateUser(User user) {
        userDao.save(user);
    }

    @Override
    public void deleteUserById(Integer id) {
        userDao.deleteById(id);
    }

    @Override
    public User findUserById(Integer id) {
        return userDao.findById(id).get();
    }

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }
}

进行到这里,我们的代码就基本编写完毕了,最后看看项目的整体目录结构:

Spring data JPA的基本使用把你难到了吗?

8.编写测试类进行测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringDataJpaApplication.class)
public class TestSpringDataJpa {

    @Autowired
    UserService userService;

    /**
     * 新增的方法
     */
    @Test
    public void test01(){
        User user = new User();
        user.setUsername("kobe");
        user.setPassword("kobe24");
        user.setTelephone("13333333333");
        userService.addUser(user);
    }

    /**
     * 根据id查询的方法
     */
    @Test
    public void test02(){
        User user = userService.findUserById(1);
        System.out.println(user);
    }

    /**
     * 修改的方法
     */
    @Test
    public void test03(){
        User user = new User();
        user.setUid(4);
        user.setPassword("admin");
        user.setUsername("Mourinho");
        user.setTelephone("16666567890");
        userService.updateUser(user);
    }

    /**
     * 查询所有数据的方法
     */
    @Test
    public void test04(){
        List<User> userList = userService.findAll();
        userList.forEach(user->{
            System.out.println(user);
        });
    }

    @Test
    public void test05(){
        userService.deleteUserById(3);
    }
}

最后经过文哥亲测,没有问题,大家可以亲自测试一下。好了,今天的Spring Data JPA,文哥就给大家介绍到这里,是不是非常简单?你以后不会因为这个不会再跑路了吧?所以小伙伴们以后工作中遇到不会的问题,千万不要想着跑路,只要你肯钻研,办法总是有的。文章来源地址https://www.toymoban.com/news/detail-444313.html

到了这里,关于Spring data JPA的基本使用把你难到了吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring data JPA常用命令

    Spring Data JPA是Spring框架的一部分,它提供了一个简化的方式来与关系型数据库进行交互。JPA代表Java持久化API,它是Java EE规范中定义的一种对象关系映射(ORM)标准。Spring Data JPA在JPA的基础上提供了更高级的抽象,使得开发人员能够更轻松地进行数据库操作。 使用Spring Data

    2024年02月15日
    浏览(55)
  • Spring Data JPA 学习笔记

    Spring Data JPA: Spring Data JPA 的技术特点: @Entity 标注是一个实体类,实体类中的每一个属性都对应表中的一列。 @Table(name = “User”) 这个注解用于指定实体类对应的数据库表名。(但首字母会小写) @Data:这个注解是Lombok库提供的,用于自动生成实体类的getter和setter方法、构造函

    2024年04月09日
    浏览(54)
  • Spring Data JPA 快速上手

    JPA的全称是Java Persisitence API,即JAVA持久化API,是sum公司退出的一套基于ORM的规范,内部是由一些列的接口和抽象类构成。JPA通过JDK5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Spring Data的优势:可以操作多种数据库,关系型数据库,非关系

    2024年04月23日
    浏览(43)
  • Spring Boot整合Spring Data Jpa + QueryDSL

    Spring Data JPA是一个Spring项目中常用的持久化框架,它简化了与数据库进行交互的过程。而QueryDSL是一个查询构建框架,可以让我们以面向对象的方式来编写数据库查询。 在本文中,我们将讨论如何使用Spring Boot整合Spring Data JPA和QueryDSL,并提供一个使用案例来演示它们的用法。

    2024年02月09日
    浏览(64)
  • Spring Data JPA的@Entity注解

     rulesCouponTypeConverter.java  entity/CouponTemplate.java Spring JPA 包的标准注解,对数据库字段进行了映射,我挑几个关键注解说道一下。 1、Entity:声明了“数据库实体”对象,它是数据库 Table 在程序中的映射对象; 2、Table:指定了 CouponTemplate 对应的数据库表的名称; 3、ID/Generat

    2024年02月11日
    浏览(57)
  • Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    SpringBoot: 整合Ldap. SpringBoot: 整合Spring Data JPA. SpringBoot: 整合Elasticsearch. SpringBoot: 整合spring-data-jpa和spring-data-elasticsearch. SpringBoot: 整合thymeleaf. SpringBoot: 注入第三方jar包. SpringBoot: 整合Redis. SpringBoot: 整合slf4j打印日志. SpringBoot: 整合定时任务,自动执行方法. SpringBoot: 配置多数据源

    2023年04月25日
    浏览(73)
  • Spring Data JPA之自动创建数据库表

    由于在项目中使用到了Spring Data JPA(Java Persistent API)进行项目开发,并且自己对JPA比较感兴趣想进行学习和了解。首先学习和了解的是JPA自动创建数据库表,通过JPA能够让软件工程师们不用再去手动创建数据表,能够减轻软件工程师们的工作量。 通过本篇博客可以实现使用

    2024年02月05日
    浏览(55)
  • 【单元测试】Spring Data JPA + H2 测试DAO层

    Springboot 2.7.8 h2 2.1.214 引入springboot parent pom 点击查看代码 引入junit , springboot-test, spring-data-jpa, H2 点击查看代码 H2是一款内存数据库,可以配合单测测试数据层。实现原理是将依赖的三方数据库通过内存的方式进行mock。其中H2数据库的数据表结构以及数据可以通过sql脚本文件初

    2024年02月07日
    浏览(98)
  • 【自我提升】Spring Data JPA之Specification动态查询详解

    写在前面:刷完Spring Data JPA的课后,发现Specification动态查询还挺有意思的,还应用到了规约设计模式,在此记录下学习过程和见解。 目录 一、应用场景 二、源码解析 三、规约模式 四、实际应用 1. 简介         有时我们在查询某个实体的时候,给定的条件是不固定的,

    2024年02月07日
    浏览(50)
  • Jpa与Druid线程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久层

                          Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包