Jap技术总结

本文详细介绍了如何在Spring Boot应用中集成JPA进行数据库操作。从引入JPA依赖开始,逐步讲解配置、启动类设置、实体类映射、定义DAO接口、建立Service接口及其实现,以及测试用例的编写,涵盖了增删改查的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JPA技术

Java Persistence Api(ORM 全自动化框架)

1. Springboot整合JPA

1.1 引入JPA

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

1.2配置

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: 1234
      driver-class-name: com.mysql.cj.jdbc.Driver
  #json时间处理
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  #jpa全自动框架
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

logging:
  level:
    com.dyit.springboot: debug

1.3 启动类

@SpringBootApplication
public class Main {

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

1.4 实体类

映射数据库的表

@Entity
@Table(name = "Person_tab")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//根据数据库的主键策略(id自增)
    @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;
}

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

@Repository
public interface IPersonDao extends CrudRepository<Person,Integer> {
    Person findByPhone(String phone);
}

1.6 建立service(增删改查)接口,并实现

接口

public interface IPersonService {
    void add(Person person);
    void update(Person person);
    List<Person> findAll();
    Person findByphone(String phone);
}

实现

@Service
@Transactional
public class PersonServiceImpl implements IPersonService {
    @Autowired
    private IPersonDao dao;
    @Override
    public void add(Person person) {

        dao.save(person);
    }

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


    @Override
    public List<Person> findAll() {

        return (List<Person>) dao.findAll();
    }

    @Override
    public Person findByphone(String phone) {
        return dao.findByPhone(phone);
    }
}

1.7 测试

鼠标在service实现类后(PersonServiceImpl implements IPersonService),用快捷键Alt+回车,创建Test类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@Slf4j
public class PersonServiceImplTest {

    @Autowired
    private IPersonService ips;
    @Test
    public void add() {

        ips.add(new Person(null,"齐斯","男",22,"1234567"));
    }

    @Test
    public void update() {
        ips.update(new Person(1,"齐齐","男",22,"12345677"));

    }

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

    @Test
    public void findByphone() {
        System.out.println("1234567");
    }
}

1.8Test(⊙o⊙)结果

add()
在这里插入图片描述

update()
在这里插入图片描述

findAll()
在这里插入图片描述

findByphone()通过电话号找人

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值