以及表结构和数据

依赖

<!--        如果有SpringBoot启动器,就不加-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent> <dependencies>
<!-- Springweb启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringData-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>
<version>5.1.45</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

实体类

  • 实体类和表的映射关系
    @Entity 表示实体类
    @Table 表示和表的关系
  • 类中属性和表中字段的映射关系
    @Id 指明主键
    @GeneratedValue 主键的生成策略
    @Column 属性和字段对应关系,一般是字段名和属性名相差比较大使用
package com.lianxi.jpa.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; import javax.persistence.*;
import java.util.Date; /**
* 实体类和表的映射关系
@Entity 表示实体类
@Table 表示和表的关系
*类中属性和表中字段的映射关系
@Id 指明主键
@GeneratedValue 主键的生成策略
@Column 属性和字段对应关系,一般是字段名和属性名相差比较大使用
*/ @Entity
@Table(name ="lx_user")
@Data
@NoArgsConstructor
public class User{
// id
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 用户名
@Column(name ="user_name")
private String userName;
// 密码
private String password;
// 姓名
private String name;
// 年龄
private Integer age;
// 性别,1男性,2女性
private Integer sex;
// 出生日期
private Date birthday;
// 创建时间
private Date created;
// 更新时间
private Date updated;
// 备注
private String note; //用来测试保存
public User(String userName, String password, String name, Integer age, Integer sex, String note) {
this.userName = userName;
this.password = password;
this.name = name;
this.age = age;
this.sex = sex;
this.note = note;
}
//用来测试更新
public User(Long id,String userName, String password, String name, Integer age, Integer sex, String note) {
this.id=id;
this.userName = userName;
this.password = password;
this.name = name;
this.age = age;
this.sex = sex;
this.note = note;
} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

数据库以及表

/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 5.7.32 : Database - springdata_jpa
*********************************************************************
*/
/*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`springdata_jpa` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */; USE `springdata_jpa`; /*Table structure for table `lx_user` */ DROP TABLE IF EXISTS `lx_user`; CREATE TABLE `lx_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
`password` varchar(100) DEFAULT NULL COMMENT '密码',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`age` int(10) DEFAULT NULL COMMENT '年龄',
`sex` tinyint(1) DEFAULT NULL COMMENT '性别,1男性,2女性',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`note` varchar(255) DEFAULT NULL COMMENT '备注',
`created` datetime DEFAULT NULL COMMENT '创建时间',
`updated` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; /*Data for the table `lx_user` */ insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (1,'zhangsan1','1234567','张三',25,1,'1964-08-08','张三同学在学Java','2014-09-19 16:56:04','2014-09-21 11:24:59');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (2,'lisi11','123456777','李四',21,1,'1995-01-01','李四同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (3,'wangwu','123456','王五',22,1,'1994-01-01','王五同学在学php','2014-09-19 16:56:04','2014-09-19 16:56:04');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (4,'zhangwei','123456','张伟',20,1,'1996-09-01','张伟同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (5,'lina','123456','李娜',28,0,'1988-01-01','李娜同学在学Java','2014-09-19 16:56:04','2014-09-19 16:56:04');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (6,'lilei','123456','李磊',23,1,'1993-08-08','李磊同学在学Java','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (7,'yangmi','123456','杨幂',24,0,'1992-08-08','杨幂同学在学php','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (8,'liuyan','123456','柳岩',21,0,'1995-08-08','柳岩同学在学java','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (9,'liuyifei','123456','刘亦菲',18,0,'1998-08-08','刘亦菲同学在学唱歌','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (10,'fanbingbing','123456','范冰冰',25,0,'1991-08-08','范冰冰同学在学java','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (11,'zhengshuang','123456','郑爽',23,0,'1993-08-08','郑爽同学在学习java','2014-09-20 11:41:15','2014-09-20 11:41:15');
insert into `lx_user`(`id`,`user_name`,`password`,`name`,`age`,`sex`,`birthday`,`note`,`created`,`updated`) values (12,'tangyan','123456','唐嫣',26,0,'1990-08-08','唐嫣同学在学习java','2014-09-20 11:41:15','2014-09-20 11:41:15'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

启动类

package com.lianxi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class UserSpringDataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(UserSpringDataJpaApplication.class,args);
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

application.yml

server:
port: 7184
spring:
application:
name: springData-Jpa
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springdata_jpa?characterEncoding=UTF-8
username: root
password: root
jpa:
database: mysql # 指定数据库
show-sql: true # 设置显示SQL
generate-ddl: true # 设置Generate Ddl
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

controller

package com.lianxi.jpa.controller;

import com.lianxi.jpa.pojo.User;
import com.lianxi.jpa.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List; @RestController
@RequestMapping("/user")
public class UserController { @Autowired
private UserService userService; /**
* 查询全部
* @return
*/
@GetMapping("/findAll")
public List<User> getUserFindAll(){ List<User> userList = userService.userFindAll();
//返回结果
return userList;
}
/**
* 根据id查询
*/
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id){ User user = userService.findById(id);
//返回结果
return user;
} /**
* 添加一条数据
* 为了测试方便,就用GET请求了
*/
@GetMapping("/add/add")
public String userAdd(){
//构建添加数据
User user = new User("ceshi","123456","测试1",18,1,"用来测试");
//添加
String userAdd = userService.userAdd(user); return userAdd;
} /**
* 删除一条数据
* 为了测试方便,就用GET请求了
*/
@GetMapping("/deleteById/{id}")
public String deleteById(@PathVariable("id") Long id){ String deleteById = userService.deleteById(id);
//返回结果
return deleteById;
} /**
* 根据id更新一条数据
* 为了测试方便,就用GET请求了
* @param id
* @return
*/
@GetMapping("/updata/{id}")
public String updataById(@PathVariable("id") Long id){
//构建数据
User user = new User(id,"ceshi","12345666","测试1",18,1,"用来测试更新方法!!");
//调用更新方法
String updataById = userService.updataById(user);
//返回结果
return updataById;
} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

dao

继承 JpaRepository接口提供了基本的增删改查
继承JpaSpecificationExecutor接口用于做复杂的条件查询

package com.lianxi.jpa.dao;

import com.lianxi.jpa.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; /**
* JpaRepository提供了基本的增删改查
* JpaSpecificationExecutor用于做复杂的条件查询
*/
public interface UserDao extends JpaRepository<User,Long>, JpaSpecificationExecutor<User> { }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

service

package com.lianxi.jpa.service;

import com.lianxi.jpa.dao.UserDao;
import com.lianxi.jpa.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional; @Service
public class UserService { @Autowired
private UserDao userDao; /**
* 查询全部
* @return
*/
public List<User> userFindAll() {
List<User> userDaoAll = userDao.findAll();
return userDaoAll;
} /**
* 根据id查询
*/
public User findById(Long id) {
User user = userDao.findById(id).get();
return user;
} /**
* 添加一条数据
*/
public String userAdd(User user) { try {
//保存
userDao.save(user); return "保存成功";
} catch (Exception e) {
e.printStackTrace();
return "保存失败";
} } /**
* 根据id删除
* @param id
* @return
*/
public String deleteById(Long id) {
try {
//保存
userDao.deleteById(id); return "删除成功";
} catch (Exception e) {
e.printStackTrace();
return "删除失败";
}
} /**
* 根据id更新一条数据
* @param user
* @return
*/
public String updataById(User user) {
try {
//更新
userDao.save(user); return "更新成功";
} catch (Exception e) {
e.printStackTrace(); return "更新失败";
}
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

这篇文章是基本的CRUD,用来快速上手使用,没有分页查询和多条件查询,其它的之后的文章里会有

原文章:https://blog.csdn.net/weixin_44257023/article/details/112064298

SpringBoot+SpringDataJpa快速上手(基本CRUD)的更多相关文章

  1. 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

    前言 缓存,在开发中是非常常用的.在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况.本篇文章,将会带大家学习Spring Cache缓存框架. 原创声明 ...

  2. springBoot日志快速上手简单配置

    默认配置 日志级别从低到高分为: TRACE < DEBUG < INFO < WARN < ERROR < FATAL. 如果设置为 INFO ,则低于 INFO 的信 ...

  3. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  4. Spring Boot 揭秘与实战(一) 快速上手

    文章目录 1. 简介 1.1. 什么是Spring Boot 1.2. 为什么选择Spring Boot 2. 相关知识 2.1. Spring Boot的spring-boot-starter 2. ...

  5. 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期

    原文:https://blog.gitee.com/2018/08/19/weekly-81/ 想要快速上手 Spring Boot?看这些教程就足够了!| 码云周刊第 81 期 码云周刊 | 201 ...

  6. Gradle快速上手——从Maven到Gradle

    [本文写作于2018年7月5日] 本文适合于有一定Maven应用基础,想快速上手Gradle的读者. 背景 Maven.Gradle都是著名的依赖管理及自动构建工具.提到依赖管理与自动构建,其重要性在 ...

  7. React:快速上手(8)——前后端分离的跨域访问与会话保持

    React:快速上手(8)——前后端分离的跨域访问与会话保持 跨域访问 跨域是指从一个域名的网页去请求另一个域名的资源.比如从http://www.baidu.com/ 页面去请求http://www ...

  8. springcloud - alibaba快速上手 - 更新完毕

    1.简单对比一下springcloud与springcloud-alibaba 2.准备知识 官网:https://nacos.io/zh-cn/ 查看cloud和springboot的对应关系 ht ...

  9. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

随机推荐

  1. WPF中属性经动画处理后无法更改的问题

    在WPF的Animation中,有一个属性为FillBehavior,用于指定时间线在其活动周期结束后但其父时间线仍处于活动周期或填充周期时的行为方式.如果希望动画在活动周期结束时保留其值,则将动画F ...

  2. 详解 WebRTC 传输安全机制:一文读懂 DTLS 协议

    作者|进学 审校|泰一 DTLS (Datagram Transport Layer Security) 基于 UDP 场景下数据包可能丢失或重新排序的现实情况下,为 UDP 定制和改进的 TLS 协 ...

  3. Day007 递归

    递归 定义 ​ A方法调A方法!就是自己调自己 作用 ​ 利用递归可以用简单的程序来解决一些复杂的问题.它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程 ...

  4. [CSP-J2019 江西] 道路拆除 题解

    发现大家都是将路径拆成三条链来做,这里提供一种暴力的乱搞方法. 思路 看到这一道题的第一想法就是跑最短路.可是仔细想想就发现,由于重合的路径只算一遍,所以导致两条最短路不一定是最优解. 接着,看到数据 ...

  5. @Test无法运行

    使用@Test需要导入两个依赖 junit-4.12.jar hamcrest-core-1.3.jar 添加@Test注解,却没有运行的三角形.需要在该类和方法上都加一个public public ...

  6. 计算机网络-OSI参考模型

    通信分层的好处 1.每一层的更改不会影响其他层2.有利于不同网络设备厂商生产出标准的网络设备 分层方法(比喻) OSI参考模型

  7. 【.Net Core】分析.net core在linux下内存占用过高问题

    现象 随着程序运行,内存占用率越来越高,直到触发linux的OOM,程序被杀死. 分析工具 运行环境:.net core 3.1(微软的分析工具要求最低3.0,无法分析2.1的core程序,需要先改为 ...

  8. 2020 ICPC EC Final西安现场赛游记

    也不知道从何说起,也不知道会说些什么,最想表达的就是很累很累. 从第一天去的时候满怀希望,没什么感觉甚至还有一些兴奋.到后来一直在赶路,感觉很疲惫,热身赛的时候觉得马马虎虎,导致热身赛被咕.然后教练就 ...

  9. for 循环语句 (enumerate枚举,据说直接写出索引值)

    for i in ***: 今天上课看到alex用了 for index,i in enumerate(list): print(index,i) (enumerate好像可以设置开头序号enumer ...

  10. 有没有一种组合字体,中文是宋体,英文是times new roman?

    有没有一种组合字体,中文是宋体,英文是times new roman? 由于日常科研工作书写需要,想问问各位大神有没有一种字体,中文是宋体,西文是times new roman,这样写论文好方便啊有没 ...