springboot-数据库访问之jpa

 

什么是springDate?

 

 

springData的作用;

 

 

 

 

 整体简化的架构:

 

 

JPA :Java Persistence API

如果没有springData 我们需要去学每一种对应的jpa实现,

有了springData就相当于将他们的jpa实现进行了封装。我们只需要学一种规范就行

注:默认springboot使用Hibernate

 

 

 

 

查看依赖关系图:

 

 

这里只给出一部分,就是可以看出来dataJpa 默认可以实现的是hibernate
且自动引入了jdbc

 

 

配置数据源:这里直接使用mysql默认的tomcat里面的数据源,不再使用druid数据源了

spring:
  datasource:
    url: jdbc:mysql://192.168.1.101:3306/jpa
    username: root
    password: 1997
    driver-class-name: com.mysql.cj.jdbc.Driver

 

 

JPA也是基于ORM思想的:ORM(Object Relational Mapping);对象关系映射

所以我们需要编写实体类和数据表进行映射

步骤

1,编写一个实体类bean,和数据表进行映射,并设置好映射关系

package com.quan.springbootjpa.entity;


import javax.persistence.*;
//使用JPA注解配置映射关系
//这个是实体类
// 告诉JPA这个是一个实体类就是和数据表映射的累
@Entity
@Table(name = "tb1_user")//指定和哪个数据表对应,如果省略表名就是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;
    }
}

 

2编写一个dao接口来操作实体类对应的数据表(repostity)

package com.quan.springbootjpa.repository;


import com.quan.springbootjpa.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

// JpaRepository<T, ID>两个泛型,一个是实体类,一个是主键
//继承 JpaRepository 来完成数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> {

}

 

3基本的配置:基本的配置可以查看Jpaproperties

spring:
  datasource:
    url: jdbc:mysql://192.168.1.101:3306/jpa
    username: root
    password: 1997
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
#      跟新或者创建数据表结构
      ddl-auto: update
#      控制台显示SQL
    show-sql: true

 

启动主程序:

因为我们开启了跟新或者创建数据表结构:

即使数据库里面没有这个表,jpa因为开启了ddl_auto : update,可以自动帮我们创建不存在的表

如下面的红色部分所示

 

 

4建立Controller测试一下CRUD

package com.quan.springbootjpa.controller;


import com.quan.springbootjpa.entity.User;
import com.quan.springbootjpa.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;


@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer  id){
        User user = userRepository.findById(id).get();
        return user;
    }

    @GetMapping("/user")
    public User insertUser(User user){
        User save = userRepository.save(user);
        return save;
    }


}

 

查询

 

 

插入语句:加入对应的累的属性参数即可

 

 

命令行可以看到执行的SQL语句

 

posted @ 2020-08-09 21:06  小丑quan  阅读(292)  评论(0)    收藏  举报