SpringBoot与数据访问(JPA)

四、整合SpringData JPA操作数据库

1.引入JPA依赖

JPA:ORM(Object Relational Mapping)

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

依赖关系图
JPA依赖关系图
配置数据源

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/jpa
    username: root
    password: 1234567890
    driver-class-name: com.mysql.jdbc.Driver
2.编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;
package com.atorg.springboot.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*;

//配置映射关系,使用jpa注解
//@JsonIgnoreProperties(value = {"hibernateLazyInitializer"})
@Entity     //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name="tb1_user")  //使用@Table来指定和那个数据表对应;如果省略默认表名就是user
public class User {

    @Id            ///这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //表示主键自增
    private Integer id;

    @Column(name = "last_name",length = 50)  //这是和数据表队对应的一个列
    private String lastName;
    @Column             //省略默认列名就是属性名
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

@Entity:告诉JPA这是一个实体类,和数据表映射类;
@Table(name=“tb1_user”) :使用@Table来指定和那个数据表对应;如果省略默认表名就是类名小写即对应此表为user;
@Id:这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY) :表示主键自增;@Column(name = “last_name”,length = 50):表示这是和数据表队对应的一个列,可以自定义列名和长度,如果省略默认列名就是属性名

3.编写一个Dao接口来操作实体类对应的数据表(Repository)
package com.atorg.springboot.repository;

import com.atorg.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

//继承JpaRepository来完成对数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> {
}

此外还得对jpa进行基本的配置参考JpaRepository

spring: 
  jpa:
    hibernate:
#      更新或者创建数据表结构(如果没有实体类中的数据表时将自动创建,如果存在将自动更新数据)
      ddl-auto: update
#      控制台显示sql
    show-sql: true

jpa.hibernate.ddl-auto: update //更新或者创建数据表结构(如果没有实体类中的数据表时将自动创建,如果存在将自动更新数据)
可以有下图看到默认的数据池是HikariPool
成功创建数据表
数据库成功创建数据表
数据库成功添加数据表

4.编写Controller进行测试
package com.atorg.springboot.controller;

import com.atorg.springboot.entity.User;
import com.atorg.springboot.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.Optional;
@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;
    //查询数据
    @GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer id){
        User user = userRepository.findById(id).orElse(null);
        return user;
    }
    //插入数据
    @GetMapping("/user")
    public User insertUser(User user ){
        User save=userRepository.save(user);
        return save;
    }
}

findById(id),save() 这两个方法是UserRepository 因为继承JpaRepository在JpaRepository封装了操作数据库的所有方法
发送查询请求
在这里插入图片描述
控制台生成sql语句
在控制台生成的sql语句
发送插入数据请求
插入数据
控制台生成的sql语句
控制台生成的sql语句
数据库数据表的信息增加
数据库数据表的信息增加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值