美文网首页
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