SpringBoot实现持久层支持:JPA

二、SpringBoot持久层支持

学习网站推荐:How2java

1、JPA概念

​ JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库。
​ 真正干活的可能是Hibernate,TopLink等等实现了JPA规范的不同厂商,默认是Hibernate。

2、JPA配置

  1. 创建数据库和表,准备数据

    create database how2java;
    
    use how2java;
    CREATE TABLE category_ (
      id int(11) NOT NULL AUTO_INCREMENT,
      name varchar(30),
      PRIMARY KEY (id)
    ) DEFAULT CHARSET=UTF8;
    
    insert into category_ values(null,'category 1');
    insert into category_ values(null,'category 2');
    insert into category_ values(null,'category 3');
    insert into category_ values(null,'category 4');
    
  2. 修改application.properties

    配置连接数据库的相关项目

    spring.mvc.view.prefix=/WEB-INF/jsp/
    spring.mvc.view.suffix=.jsp
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=admin
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    
  3. 修改pom.xml

    在该文件中的dependencies标签增加配置,增加对Mysql和Jpa的支持

            <!-- mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.21</version>
            </dependency>
            <!-- jpa-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency> 
    
  4. 分别创建Category、CategoryDAO、CategoryController

    • Category

      增加一个包:com.how2java.springboot.pojo,然后创建实体类Category。
      @Entity 注解表示这是个实体类
      @Table(name = “category_”) 表示这个类对应的表名是 category_ ,注意有下划线
      @Id 表明主键
      @GeneratedValue(strategy = GenerationType.IDENTITY) 表明自增长方式
      @Column(name = “id”) 表明对应的数据库字段名

      package com.how2java.springboot.pojo;
       
      import javax.persistence.Column;
      import javax.persistence.Entity;
      import javax.persistence.GeneratedValue;
      import javax.persistence.GenerationType;
      import javax.persistence.Id;
      import javax.persistence.Table;
       
      @Entity
      @Table(name = "category_")
      public class Category {
              
              
       
          @Id
          @GeneratedValue(strategy = GenerationType.IDENTITY)
          @Column(name = "id")
          private int id;
           
          @Column(name = "name")
          private String name;
          public int getId() {
              
              
              return id;
          }
          public void setId(int id) {
              
              
              this.id = id;
          }
          public String getName() {
              
              
              return name;
          }
          public void setName(String name) {
              
              
              this.name = name;
          }
           
      }
      
    • CategoryDAO

      增加一个包:com.how2java.springboot.dao,然后创建dao接口;CategoryDAO继承了JpaRepository,并且提供泛型<Category,Integer> 表示这个是针对Category类的DAO,Integer表示主键是Integer类型。
      JpaRepository 这个父接口,就提供了CRUD, 分页等等一系列的查询了,直接拿来用,都不需要进行二次开发。

      package com.how2java.springboot.dao;
      import org.springframework.data.jpa.repository.JpaRepository;
      import com.how2java.springboot.pojo.Category;
       
      public interface CategoryDAO extends JpaRepository<Category,Integer>{
              
              
       
      }
      
    • CategoryController

      增加一个包:com.how2java.springboot.web,然后创建CategoryController 类。

      1. 接受listCategory映射
      2. 然后获取所有的分类数据
      3. 接着放入Model中
      4. 跳转到listCategory.jsp中
      package com.how2java.springboot.web;
      import java.util.List;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
      import com.how2java.springboot.dao.CategoryDAO;
      import com.how2java.springboot.pojo.Category;
        
      @Controller
      public class CategoryController {
              
              
          @Autowired CategoryDAO categoryDAO;
          @RequestMapping("/listCategory")
          public String listCategory(Model m) throws Exception {
              
              
              List<Category> cs=categoryDAO.findAll();
               
              m.addAttribute("cs", cs);
               
              return "listCategory";
          }
           
      }
      
  5. 创建listCategory.jsp

    对CategoryController传递过来的集合(cs)进行遍历

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <table align='center' border='1' cellspacing='0'>
        <tr>
            <td>id</td>
            <td>name</td>
        </tr>
        <c:forEach items="${cs}" var="c" varStatus="st">
            <tr>
                <td>${c.id}</td>
                <td>${c.name}</td>
            </tr>
        </c:forEach>
    </table>
    
  6. 重启测试

    由于pom.xml中增加了对jar包的依赖,而Springboot的热部署是没办法起作用的,所以在这里需要手动重启一下:

    之后访问测试地址:

    listCategory

猜你喜欢

转载自blog.csdn.net/weixin_40849588/article/details/95486758