使用SpringBoot访问MySQL数据库,并且结合SpringDataJPA完成CRUD(Create,Read,Update,Delete

结合 Springboot01 中的demo案例 Springboot01创建第一个程序

1 添加 pom.xml 依赖

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

2  配制数据源


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring-test
spring.datasource.username=root
spring.datasource.password=123456
#com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
##是hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构
#create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
#create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
#update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
#validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
spring.jpa.properties.hibernate.hbm2ddl.auto=update

3 创建 UserController


import com.springboot.demo.pojo.UserModel;
import com.springboot.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping(value = "/users")
public class UserController {@Autowiredprivate UserRepository userRepository;/*** 查询所有的用户* @return*/@RequestMapping(value = "/list",method = RequestMethod.GET)public List<UserModel> getAllUserList(){return userRepository.findAll();}/*** 添加新用户* 更新 这里主键为 id 如果数据参数中有对应的id 则为更新* @param userModel* @return*/@RequestMapping(value = "/add",method = RequestMethod.POST)public UserModel addUser(UserModel userModel){return userRepository.save(userModel);}/*** 删除用户* @param id* @return*/@RequestMapping(value = "/delete",method = RequestMethod.POST)public  List<UserModel>  deleteUser(Long id){userRepository.deleteById(id);return userRepository.findAll();}
}

4 创建 对应的 JPA

import com.springboot.demo.pojo.UserModel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;import java.io.Serializable;/*** JpaRepository接口(SpringDataJPA提供的简单数据操作接口)* JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)* Serializable(序列化接口)。*/
public interface UserRepository extends JpaRepository<UserModel,Long> , JpaSpecificationExecutor<UserModel>, Serializable {
}

5 对应的映射实体 UserModel

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;@Entity
@Table(name = "t_user")
public class UserModel implements Serializable {@Id@GeneratedValue@Column(name = "u_id")private Long id;@Column(name = "u_name")@NotNull(message = "姓名不可为空")private String name;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

6 启动程序测试

测试添加

测试查询

在这里,我们创建的 UserRepository继承了JpaRepository接口内有又继承了PagingAndSortingRepository接口以及QueryByExampleExecutor接口,而PagingAndSortingRepository接口内部又有一个继承自CrudRepository

CrudRepository接口 内包含了最简单的CRUD也就是Create、Read、Update、Delete方法,当然还有count、exists方法

PagingAndSortingRepository该接口继承自CrudRepository接口,包含了最基本的CRUD方法的实现,该接口内部添加了两个方法,设计了分页和排序功能

QueryByExampleExecutor  该接口提供条件查询,复杂查询方法,可以通过Example方式进行查询数据

我们创建的 UserRepository继承了JpaRepository接口,也就是说我们的UserRepository拥有了JpaRepository接口及父类接口的所有方法实现,所以我们并不需要添加任何数据操作代码就可以完成数据操作,JpaRepository接口对条件查询以及保存集合数据添加了对应的方法。

Springboot03整合SpringDataJPA访问MySQL数据库相关推荐

  1. springboot整合mysql5.7_springboot整合mybatis访问mysql,数据库

    讲解如何在springboot下整合mybatis,并访问数据库. 引入依赖 在pom文件引入mybatis-spring-boot-starter的依赖: org.mybatis.spring.bo ...

  2. 简单配置Mybatis,Druid访问MySQL数据库

    文章目录 前言 一.Mybatis是什么 二.Druid是什么 三.使用步骤 1. 导入Jar包 2. application.yml配置Druid数据源 3. application.yml配置My ...

  3. android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  4. serverless mysql_Serverless 解惑——函数计算如何访问 MySQL 数据库

    函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务 ...

  5. SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...

  6. Mysql —— linux下使用c语言访问mySql数据库

    示例1: #include<stdio.h> #include<mysql.h> int main() { MYSQL mysql; mysql_init(&mysql ...

  7. MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子

    C语言访问MYSQL数据库的完整的代码例子 1.手写安装带mysql sdk 的mysql 2.新建控制台项目,项目属性中把 C:\Program Files\MySQL\MySQL Server 5 ...

  8. ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析

    ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析 . /   // datadase odbc1.cpp : 定义应用程序的入口点.  //   #inc ...

  9. 使用C++访问MySQL数据库(VS2019)

    文章目录 1 使用C++访问MySQL数据库(VS2019) 1 使用C++访问MySQL数据库(VS2019) 在VS2019中使用C++访问MySQL数据库的方式如下: 第一步: 打开mysql的 ...

最新文章

  1. GIT入门笔记(4)- GIT 安装
  2. 格灵深瞳CTO邓亚峰:AI学习的三种路线
  3. FPGA 核和FPGA Fabric的区别是什么?
  4. python的flask微服务-一次flask+redis的微服务实战
  5. 计算机网络的拓扑结构主要取决于它的( )
  6. Skywalking部署常见问题以及注意事项
  7. 数字0-9的数量(51Nod-1042)
  8. Golang 实现tcp转发代理
  9. Mac中使用svn进行项目管理
  10. AcWing 840. 模拟散列表(散列hash)
  11. 计算机图形学多边形填充代码_计算机图形学 Computer Graphics (第一周笔记及课件翻译)...
  12. 常见在线射频电学计算公式
  13. 什么是二级域名,什么是二级目录?
  14. 抖音不会创作爆款视频?模仿他人爆款视频轻松上热门。
  15. python_pygame.外星人入侵
  16. 滴滴的大数据计算平台演进之路
  17. Python多线程实现WIFI破解
  18. JSP实用教程——第二章:JSP语法
  19. verilog练习:hdlbits网站上的做题笔记(5)
  20. Daily English - ... is driving me up a wall.

热门文章

  1. 超越MobileNet v3!华为诺亚、北大提出GhostNet​,使用线性变换生成特征图
  2. 【OpenCV】OpenCV函数精讲之 -- 访问图像中的像素--计时函数
  3. 2021年,作为算法工程师的你们会在CV业务上用Transformer吗?
  4. GitHub标星3.6k | 给AI一张高清照片,分分钟还你3D人体模型
  5. vb6 获取zip列表_深入学习redis(压缩列表)
  6. android 底部动画,Android实现360手机助手底部的动画菜单
  7. java数据库实例_选择数据库实例
  8. spring boot java app_利用spring boot创建java app
  9. java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...
  10. 第二篇:对CART,Gradient Boost,Xgboost,LightGBM的学习