[JAVA EE] JPA技术基础:完成数据列表显示
本章完成数据列表显示功能
ORM 和 JPA
ORM (Object Relation Mapping) 是对象/关系映射,它将数据库中的表
和内存中的对象建立映射关系。
对象和关系型数据是业务实体的两种表现形式。
业务实体在内存中表现为对象,在数据库中表现为关系型数据。
内存中的对象不会被永久保存,关系型数据库中的对象会被永久保存。
JPA 概念
- JPA (Java Persistence API) 是一种 Java 持久化 API,用于对象的持久化,是一种非常强大的 ORM 解决方案。
- JPA 通过简单约定好接口方法的规则自动生成相应的 JPQL 语句,然后映射成 POJO 对象。
JPA 基本用法
数据库启动有问题的见本人另一篇博客!
启动MySQL:net start mysql出现问题+本地Mysql忘记密码的修改方法
- 准备工作
- 新建 Spring Boot 项目:
jpademo
- 添加相关依赖:
- pom.xml
<!-- Spring Data JPA 依赖(重要) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- MySQL 驱动(重要) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
添加完依赖,要重启IDEA
数据库连接配置(这个很重要!)
在 application.properties 添加数据库连接配置:(username和password记得填自己的!推荐全写root,好记!)
#自动生成数据库表(关键)update表示更新或者创建数据表结构(首次)
spring.jpa.hibernate.ddl-auto=update
#mysql数据库连接配置(非常重要)
#端口号,数据库名,时区信息
spring.datasource.url = jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Shanghai
spring.datasource.username = root
spring.datasource.password = root
#mysql数据库驱动程序(重要)
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
#jpa配置:在控制台显示Hibernate的sql(可选)
spring.jpa.show-sql = true
#其他配置:关闭Thymeleaf 的缓存
spring.thymeleaf.cache = false
- 运行项目,自动生成表。
- 图中是Navicat和MySQL Workbench两个的界面,别看混了。
- (因为我的老师使用的是MySQL Workbench,但是我比较喜欢用Navicat,所以就都用了试下。)
- 怎么看?见本人另外一篇博客:MySQL新建数据库+用Navcat查看MySQL的方法
- 创建实体类
在 entity 包中新建 User 类:用于映射数据库表
- user.java
- 自己敲的时候的顺序:
先写以下内容:
import javax.persistence.*;
import java.util.Date;@Entity //声明类为实体类,不能掉!
public class User implements Serializable {private Long id; // Long 对应MySQL数据库 bigint 类型private String username;private String password;private Date regdate; // Date 对应MySQL数据库 datetime 类型private int status;
// getter/setter
}
- 再加上注解(就是@的内容)
- 再加上getter和setter
- (不会还有人手动敲吧?不会还不会generate吧?)
- 这里要按住shift全选
- 点击ok,自动生成getter
- setter同理~
- 完成后的代码:
package com.example.demo.entity;import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;@Entity
public class User implements Serializable {@Id //表示该属性作为表的主键@GeneratedValue(strategy = GenerationType.IDENTITY)//设定主键生成策略:IDENTITY表示由数据库自动生成private Long id;// Long 对应MySQL数据库 bigint 类型@Column(nullable = false,unique = true,length = 20)//列字段,非空且唯一,字符最大长度20private String username;@Column(nullable = false,length = 20)//列字段,非空,字符最大长度20private String password;@Column(nullable = false)@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//声明日期格式private Date regdate;// Date 对应MySQL数据库 datetime 类型@Column(nullable = false)private int status;//状态:0是离线,1是在线,等。public Long getId() {return id;}public String getUsername() {return username;}public String getPassword() {return password;}public Date getRegdate() {return regdate;}public int getStatus() {return status;}public void setId(Long id) {this.id = id;}public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}public void setRegdate(Date regdate) {this.regdate = regdate;}public void setStatus(int status) {this.status = status;}
}
- 添加记录:
如果用的是MySQL Workbench:
- 创建数据接口访问层(repository仓库)
- JPA 提供了操作数据库的接口。在开发过程中继承和使用这些接口,可
简化持久化开发工作。 - Spring能够找到自定义接口,并生成代理类,在开发过程中可以不写相
关SQL操作,由代理类自动生成。 - JPA接口:JpaRepository
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T>
其中:T表示实体类,ID表示主键类型,ID必须实现序列化
创建过程:repository仓库
- 新建
repository
包,并新建接口:UserRepository
(仓库接口) - 该接口要
extends JpaRepository<User, Long>
接口(User:实体模型类,Long:主键类型)
UserRepository.java
package com.example.demo.repository;import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {// JpaRepository 自动实现了很多内置的CURD方法 (厉害啊!)
// 这些方法以后可直接调用,例如:
// List<T> findAll();
// Optional<T> findById(id);
// User save(user);
// void delete(user);
// void deleteById(id);
// long count();
// boolean existsById(id);
}
- 调用Repository完成业务控制
在 controller 包中新建 UserController 控制器。
代码顺序还是和上文介绍的一样,不复制粘贴总是有好处的~
package com.example.demo.controller;import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {//@Autowired:自动注入,即对象只需声明,不用new就能使用(Spring IoC技术体现,厉害呀!)@AutowiredUserRepository userRepository;@RequestMapping("/get/{id}")public User getUserById(@PathVariable Long id){//Repository内置的方法,可直接使用,根据 id 查找对象//注:findById(id)返回的是Optional类(一个可以为null的容器对象),如果对象存在则调用get()方法返回该对象User user =userRepository.findById(id).get();return user;}@RequestMapping("/list")public List<User> list(){//Repository内置的方法,可直接使用,查找所有对象List<User> users = userRepository.findAll();return users;}
}
- 请求试试
http://localhost:8080/get/1
在postman中测试:
http://localhost:8080/list
[JAVA EE] JPA技术基础:完成数据列表显示相关推荐
- [JAVA EE] JPA技术基础:完成数据列表的删除
接上一篇:[JAVA EE] JPA技术基础:完成数据列表显示 本章完成数据列表的删除 修改 UserController.java package com.example.demo.controll ...
- [JAVA EE] JPA 技术实践:完成增、删、改、查操作
项目已上传:https://codechina.csdn.net/qq_36286039/javaee 注意本项目是包含后文JPA 查询用法内容的,若您想看只有本文内容的项目,请下载: https:/ ...
- 开课吧:Java开发常用技术基础部分有哪些?
在Java中,OOM是java.lang.OutOfMemoryError的缩写,简单来说是应用的内存用完了.而这个内存,指代的是JVM管理的内存模型. Java开发常用技术基础有如下几种: Priv ...
- Java毕业设计_基于SSH的Java EE开发技术课程网站设计
基于SSH的Java EE开发技术课程网站设计 基于SSH的Java EE开发技术课程网站设计mysql数据库创建语句 基于SSH的Java EE开发技术课程网站设计oracle数据库创建语句 基于S ...
- Java EE服务技术
Java EE容器为组件提供了各种服务,这些服务是企业应用经常用到但开发人员难以实现的,例如命名服务.数据库连接.上下文和依赖注入.事务.安全和连接框架等.现在这些服务已经由容器实现,因此Java E ...
- 工程数据计算机处理的方法有,第二章 CADCAM技术基础-工程数据的计算机处理2011.ppt...
文档介绍: CAD/CAM技术基础 CAD/CAM Technology Base 主讲人:XXX E-mail:XXX 第二章 工程数据的计算机处理 Computer Processing of E ...
- Java EE组件技术
组件是Java EE应用的基本单元.Java EE 6提供的组件主要包括三类:客户端组件.Web组件和业务组件. 1.客户端组件 用户通过客户端组件与企业应用进行交互.Java EE客户端既可以是一个 ...
- 1. Java EE简介 - JavaEE基础系列
什么是Java EE? 真的是你理解的那样吗? Java EE, 原名J2EE, 其核心由一系列抽象的标准规范所组成, 是针对目前软件开发中所普遍面临问题的解决方案. 注意以上定义中的"抽象 ...
- java ee开发技术 上海大学_上海大学计算机工程与科学学院硕士生导师刘 炜
刘炜,男,1978年生,副研究员,中国计算机协会会员,服务计算专委会委员.2005 年5月毕业于上海大学计算机学院,获控制理论与控制工程专业博士学位.2005 年9 月至2007 年11 月,在上海大 ...
最新文章
- 为什么vs数据库中文显示问号_本科论文知网不收录为什么会被知网查重到?
- Exchange Server 2010中控制台用命令设置用户邮箱自动回复
- Linux笔记1- 6 --文件
- mysql readline_readLine的两种用法
- python logging mysql_Python 操作 MySQL 的正确姿势
- 华为手机的分类有何区别_“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?...
- 20. Cookie 和 Session
- 漫画:如何优化 “字符串匹配算法”?
- mysql联合索引测试
- memcached教程_Memcached教程
- 你不知道的JS之作用域和闭包(三)函数 vs. 块级作用域
- 设计模式-01-设计模式简介及分类
- 复旦计算机系统基础课件,复旦大学软件工程考研(MSE)计算机系统基础复习资料.ppt...
- 常用的机器学习与深度学习算法简介
- 一个无穷积分方程的求解
- [TJOI2019]唱、跳、rap和篮球——NTT+生成函数+容斥
- 浅谈建站经验之网站建设的流程与步骤
- 书到用时方恨少,一大波JS开发工具函数来了
- python实现键盘自动输入_人生苦短我用Python——模拟鼠标点击和键盘输入的操作...
- iPhone 自动关机 原因 天气太冷
热门文章
- 2022-2028年中国SIP芯片行业市场前景预测及投资战略研究报告
- 2022-2028年中国抗菌不锈钢行业研究及前瞻分析报告
- c#打开数据库连接池的工作机制_数据库连接池-tomcat-jdbc使用笔记
- 只有变强大,才能照亮他人
- 日志处理logger
- seq2seq(1)- EncoderDecoder架构
- 数字汽车钥匙的安全性增强技术
- 2021年大数据Hadoop(七):HDFS分布式文件系统简介
- CentOs7中安装python3.7.6
- 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...