0


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**-**name**: **com**.**mysql**.**jdbc**.**Driver**
    **url**: **jdbc**:**mysql**://192.168.10.139:3306/**jpa**
    **username**: **root**
    **password**: **Admin123**!
    **type**: **com**.**alibaba**.**druid**.**pool**.**DruidDataSource**
  **jpa**:   #**springdataJpa**配置
    **properties**:
      **hibernate**:
        **hbm2ddl**:
          **auto**: **update**  #**jpa**自动创建数据表,如果表已经存在,则不再创建
        **dialect**: **org**.**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会根据实体类帮助我们自动的生成数据表!!!是不是很方便。

5. 编写dao接口

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

**public** **interface** **UserDao** **extends** **JpaRepository**<**User**, **Integer**> {
}

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

至此我们就可以看到,这个接口继承了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();
    }
}

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

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,文哥就给大家介绍到这里,是不是非常简单?你以后不会因为这个不会再跑路了吧?所以小伙伴们以后工作中遇到不会的问题,千万不要想着跑路,只要你肯钻研,办法总是有的。

标签: spring java postman

本文转载自: https://blog.csdn.net/GUDUzhongliang/article/details/125151080
版权归原作者 千锋教育官方 所有, 如有侵权,请联系我们删除。

“Spring data JPA的基本使用把你难到了吗?”的评论:

还没有评论