步骤1:JPA概念
步骤2:创建数据库
步骤3:创建表
步骤4:准备数据
步骤5:先运行,看到效果,再学习
步骤6:模仿和排错
步骤7:基于前面的知识点
步骤8:application.properties
步骤9:pom.xml
步骤10:Category
步骤11:CategoryDAO
步骤12:CategoryController
步骤13:listCategory.jsp
步骤14:重启测试
步骤15:更多关于JPA

步骤 1 : JPA概念

JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库。
真正干活的可能是Hibernate,TopLink等等实现了JPA规范的不同厂商,默认是Hibernate。
本知识演示如何在Springboot中快捷方便地使用JPA。

步骤 2 : 创建数据库

创建数据库,名称是 how2java

create database how2java;

步骤 3 : 创建表

创建个分类表,字段很简单,就id和name

use how2java;

CREATE TABLE category_ (

  id int(11) NOT NULL AUTO_INCREMENT,

  name varchar(30),

  PRIMARY KEY (id)

) DEFAULT CHARSET=UTF8;

步骤 4 : 准备数据

插入4条数据

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');

步骤 5 : 先运行,看到效果,再学习

老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。 
测试地址:

http://127.0.0.1:8080/listCategory

注: 启动方式是Springboot特有的,直接运行类:com.how2java.springboot.Application 的主方法。

步骤 6 : 模仿和排错

在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。 
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。 
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。 
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来 
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程

步骤 7 : 基于前面的知识点

本知识点基于错误处理开发,所以最好要把前面的内容学习了哦,不然有些内容恐怕看不懂呢

步骤 8 : application.properties

新增数据库链接必须的参数

spring.jpa.properties.hibernate.hbm2ddl.auto=update

表示会自动更新表结构,所以创建表 这一步其实是可以不需要的~

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

步骤 9 : pom.xml

增加对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> 

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

  <groupId>com.how2java</groupId>

  <artifactId>springboot</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <name>springboot</name>

  <description>springboot</description>

  <packaging>war</packaging>

  

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>1.5.9.RELEASE</version>

    </parent>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-tomcat</artifactId>

            

        </dependency>

        <dependency>

              <groupId>junit</groupId>

              <artifactId>junit</artifactId>

              <version>3.8.1</version>

              <scope>test</scope>

        </dependency>

        <!-- servlet依赖. -->

        <dependency>

              <groupId>javax.servlet</groupId>

              <artifactId>javax.servlet-api</artifactId>

              

        </dependency>

              <dependency>

                     <groupId>javax.servlet</groupId>

                     <artifactId>jstl</artifactId>

              </dependency>

        <!-- tomcat的支持.-->

        <dependency>

               <groupId>org.apache.tomcat.embed</groupId>

               <artifactId>tomcat-embed-jasper</artifactId>

               

        </dependency>     

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-devtools</artifactId>

            <optional>true</optional<!-- 这个需要为 true 热部署才有效 -->

        </dependency>

        

        <!-- 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>        

    </dependencies>

    <properties>

        <java.version>1.8</java.version>

    </properties>

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

</project>

步骤 10 : 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;

    }

    

}

步骤 11 : 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>{

}

步骤 12 : 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";

    }

    

}

步骤 13 : listCategory.jsp

用jstl遍历从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>

步骤 14 : 重启测试

因为在pom.xml中增加了jar包的依赖,所以仅仅通过Springboot本身的热部署是无法起作用的,得手动重启一下。
然后访问测试地址:

http://127.0.0.1:8080/listCategory

观察到如图所示的效果

步骤 15 : 更多关于JPA

后面有一个JPA的CRUD和分页,可以学习到更多的关于JPA的知识

关注我,分享更多Java全栈技术
更多Java全栈技术内容,点击了解: https://how2j.cn/k/springboot/springboot-jpa/1648.html

SpringBoot系列教材 (十三)- 持久层支持 - springboot中如何运用JPA,简单例子相关推荐

  1. SPRINGBOOT中如何运用JPA,简单例子

    SPRINGBOOT中如何运用JPA,简单例子 步骤 1 : JPA概念顶折 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,用来方便大家操作数据库. 真正干活 ...

  2. eclipse maven打包jar 部分jsp无法访问_Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目...

    Maven系列教材 (九)- 在Eclipse中创建maven风格的java web项目 步骤1:删除j2ee目录步骤2:新建Maven 项目步骤3:这个界面点下一步步骤4: 这个界面使用webapp ...

  3. SpringBoot项目拥抱Mybatis-Plus持久层框架实践

    本文目录 前言 自从 Mybatis-Plus推出以来,越来越多的公司在自己的项目中选择Mybatis-Plus框架替换了持久层框架Mybatis.因为Mybatis-Plus用起来既有Mybatis ...

  4. 一起来学SpringBoot(七)持久层框架

    springboot具有非常棒的持久层框架支持,下面我将介绍我用过的三种持久层框架进行简述使用. 由于这里操作的都是一张表,这里贴出通用的yml和建表语句 切记这里使用的是mysql8 ,5.8之前的 ...

  5. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

  6. SpringBoot 系列教程(十三):SpringBoot集成EasyPoi实现Excel导入导出

    "无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点人工智能教程可以跳转到教程. easyp ...

  7. SpringBoot系列之(二):1.使用SpringBoot

    一.构建系统 1.依赖管理 1.1.依赖管理工具:maven/gradle/ant 1.2.依赖管理 1.2.1.默认(建议使用) 从spring initializr(https://start.s ...

  8. 【笑小枫的SpringBoot系列】【十五】SpringBoot根据模板生成Word

    通过maven引入需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifact ...

  9. 【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF

    关于笑小枫

最新文章

  1. [luogu P4198] 楼房重建(线段树 + 思维)
  2. flash和js通讯的伪沙箱安全错误
  3. 再问数据中台 - 企业数据中台的团队如何构建?绩效如何评价?
  4. JavaWeb——servlet介绍
  5. 在线教育行业APP高效开发解决方案
  6. JavaWeb——Servlet(入门必备,web请求与响应的底层)
  7. ElasticSearch插件安装---Head ,Kopf与Bigdesk
  8. 智能卡检测控制系统检测m1这么操作_多联机制冷剂灌注操作方法
  9. golang爬取Instagram内容下载地址
  10. Composer报错: require(): Failed opening required ‘.../markbaker/matrix/.../functions/adjoint.php‘
  11. 2016年上市新SUV斯柯达kodiaq大气造型
  12. 26.看前端视频的感悟,来自碎碎念记录
  13. USB 传输方式(控制)
  14. Frequent Pattern Tree 频繁模式数
  15. HTML俄罗斯方块小游戏
  16. win10启动个性化文字提示
  17. 动态规划——割绳子问题
  18. Python:枚举法
  19. Mingw64编译Opencv
  20. matlab中的help怎么使用?

热门文章

  1. Spring框架面试题总结(面试必备)
  2. Redis服务端如何退出关闭?
  3. 关于Ubuntu显卡驱动失败产生的一些错误以及解决办法
  4. 一次初级的PEdiy之旅——迅雷广告条移除[看雪转载]
  5. Delphi 操作Windows系统睡眠-防止系统/电脑 进入睡眠或关闭显示器
  6. 代码放进word_在Word中插入代码并高亮显示(针对会编程的小伙伴)
  7. github合并分支~
  8. PTHREAD_PRIO_INHERIT 的翻译
  9. Java 中利用Calendar类的方法判断当前年是闰年还是平年
  10. python浮点数怎么运算_Python 浮点数运算