0
点赞
收藏
分享

微信扫一扫

springboot整合JPA(一)

野见 2022-03-18 阅读 56

目录

1.在IDEA中新建项目springboot-jpa

2.配置maven环境

3.引入依赖 -- pom.xml

4.配置--注意:配置文件中的缩进问题

5.Java

5.1 启动类

5.2 实体类(entity) -- jpa注解的使用

5.3 定义接口和数据库的交互(dao)

 5.3.1 接口CrudRepository的源码   (增删改查)

5.3.2 springboot-jpa的dao

5.4 服务(Service)

5.5 测试(Junit 4)


1.在IDEA中新建项目springboot-jpa

        File-->new-->project-->Maven(基于jdk)-->建立项目

2.配置maven环境

        File-->Settings-->Maven

3.引入依赖 -- pom.xml

        引入jpa

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

        pom.xml全部内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.it.springboot</groupId>
    <artifactId>springboot-jpa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.lombok.version>1.18.22</project.lombok.version>
        <project.mysql.version>8.0.25</project.mysql.version>
        <project.druid.version>1.2.8</project.druid.version>
        <project.junit.version>4.12</project.junit.version>
        <project.swagger.version>3.0.0</project.swagger.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <version>2.5.10</version>
        <artifactId>spring-boot-starter-parent</artifactId>
    </parent>

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

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${project.lombok.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${project.mysql.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${project.druid.version}</version>
        </dependency>

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

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${project.junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!--swagger3 api测试框架-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>${project.swagger.version}</version>
        </dependency>


    </dependencies>

    <!--插件打包-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

4.配置--注意:配置文件中的缩进问题

         application.yml

spring:
  profiles:
    active: dev

        application-dev.yml

server:
  port:8099

#数据源配置
spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/mybatis_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
      username: root
      password:
      driver-class-name: com.mysql.cj.jdbc.Driver
  #json时间预处理
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  #数据库操作
  #update:数据库中不存在该表 创建该表
  #true:显示SQL语句
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

#日志
logging:
  level:
    com.it.springboot: debug

5.Java

5.1 启动类

package com.it.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

5.2 实体类(entity) -- jpa注解的使用

import lombok.NoArgsConstructor;

import javax.persistence.*;

//实体类  映射数据库的表
@Entity
@Table(name = "Person_tab")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    //Id 主键  GeneratedValue根据数据库的策略而定
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "person_id")
    private Integer id;
    @Column(name = "person_name")
    private String name;
    @Column(name = "person_gender")
    private String gender ;
    @Column(name = "person_age")
    private Integer age;
    @Column(name = "person_phone")
    private String phone;
}

5.3 定义接口和数据库的交互(dao)

5.3.1 接口CrudRepository的源码   (增删改查)

package org.springframework.data.repository;

import java.util.Optional;

@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S entity);

    <S extends T> Iterable<S> saveAll(Iterable<S> entities);

    Optional<T> findById(ID id);

    boolean existsById(ID id);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> ids);

    long count();

    void deleteById(ID id);

    void delete(T entity);

    void deleteAllById(Iterable<? extends ID> ids);

    void deleteAll(Iterable<? extends T> entities);

    void deleteAll();
}

5.3.2 springboot-jpa的dao

package com.it.springboot.dao;

import com.it.springboot.entity.Person;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository//存储
//<实体类,主键类型>
public interface IPersonDao extends CrudRepository<Person,Integer> {
}

5.4 服务(Service)

package com.it.springboot.service;

import com.it.springboot.entity.Person;

import java.util.List;

public interface IPersonService {
    void add(Person person);
    List<Person> findAll();
    void deleteById(int id);
    boolean existPerson(int id);
}
package com.it.springboot.service.impl;

import com.it.springboot.dao.IPersonDao;
import com.it.springboot.entity.Person;
import com.it.springboot.service.IPersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Service
@Transactional
public class IPersonServiceImpl implements IPersonService {
    @Autowired
    private IPersonDao dao;

    @Override
    public void add(Person person) {
        dao.save(person);
    }

    @Override
    public List<Person> findAll() {
        return (List<Person>)dao.findAll();
//        return dao.findAll();
    }

    @Override
    public void deleteById(int id) {
        dao.deleteById(id);
    }

    @Override
    public boolean existPerson(int id) {
        return dao.existsById(id);
    }
}

 5.5 测试(Junit 4)

package com.it.springboot.service.impl;

import com.it.springboot.entity.Person;
import com.it.springboot.service.IPersonService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.junit.Assert.*;
//Runwith() 测试容器
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@Slf4j
public class IPersonServiceImplTest {
    @Autowired
    private IPersonService ips;

    @Test
    public void add() {
        ips.add(new Person(5,"晋华","男",14,"17234568917"));
        log.debug("添加成功");
    }

    @Test
    public void findAll() {
        log.debug("findAll-->"+ips.findAll());
    }

    @Test
    public void deleteById() {
        ips.deleteById(3);
        log.debug("删除成功");
    }

    @Test
    public void existPerson() {
        log.debug("编号为3的用户是否存在:"+ips.existPerson(3));
    }
}

执行结果如下图所示:

添加

全查询

删除(使用id删除)

检索(使用编号判断此人信息是否存在)

举报

相关推荐

0 条评论