美文网首页
SpringBoot整合JPA

SpringBoot整合JPA

作者: CodePandaes | 来源:发表于2020-03-09 17:03 被阅读0次

简介

我们都知道一个概念ORM(Object Relational Mapping)对象关系映射,ORM的作用是在操作数据库之前,先把数据表与实体类关联起来,然后通过实体类的对象操作(增删改查)数据库表。所以,ORM是一个实现使用对象操作数据库的设计思想!!! 通过这句话,我们知道JPA的作用就是通过对象操作数据库的,不用编写sql语句。

JPA和Hibernate、toplink的关系就像JDBC和mysql、Oracle驱动的关系一样,JPA是规范,Hibernate除了是ORM框架之外,它还是一种JPA的实现。而Spring Data JPA其实就是基于ORM框架封装了的Hibernate,可使得开发者用极简的代码即可实现对数据库的访问和操作,它提供了包括增删改查等常用功能,可以极大提高开发效率。


快速入门

  1. 新建一个web项目(可以参考我的上一篇博客SpringBoot初体验)打开pom.xml引入依赖
    <dependencies>
        <!--只要和数据库有链接就会有JDBC的依赖包,所以导入了JPA就有了JDBC的依赖包不需要再导入了-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--引入web依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入mysql依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    
    </dependencies>

打开配置文件application.yml,添加数据库配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
#能配置哪些属性在JpaProperties里面有绑定,参照即可
  jpa:
    hibernate:
      #更新或者创建数据表结构
      ddl-auto: update
      #控制台显示sql
    show-sql: true

添加实体类User

//使用JPA注解配置映射关系
@Entity  //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tb2_user") //@Table 来制定和那个数据表对应;若省略则对应小写的user
public class User {
    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增
    private Integer id;

    @Column(name = "last_name", length = 50) //这是和数据表对应的一个列,大小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;
    }
}

添加接口类UserRepository继承JpaRepository

//继承JpaRepository<User, Integer> 完成对数据库的操作 <实体类类名, 实体类主键的数据类型>
public interface UserRepository extends JpaRepository<User, Integer> {
}

添加Controller层UserController

@RestController
public class Usercontroller {

    //不需要添加@Bean注入容器, 因为UserRepository本身就是 JPARepository
    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User findUserById(@PathVariable("id") Integer id) {
        return userRepository.findById(id).orElse(null);
    }

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

新建数据库jpa


启动项目会自动生成表tb2_user

浏览器输入localhost:8080/user?lastName=zhangsan 添加User对象成功,并查看数据库表

最后浏览器输入localhost:8080/user/1 得到json对象,测试成功

相关文章

网友评论

      本文标题:SpringBoot整合JPA

      本文链接:https://www.haomeiwen.com/subject/lhgjdhtx.html