Springboot数据库访问JPA

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Springboot数据库访问JPA

本篇将介绍几种连接数据库的方式。首先我们今天使用JPA进行连接数据库进行测试。

首先我们先得安装一个数据库,我本机是使用虚拟机上进行安装docker,docker安装的mysql数据库。

docker安装

docker的安装直接参考官方文档:

docker常用的命令

我们可以查询命令https://docs.docker.com/engine/reference/commandline/docker/,也可以在docker里边输入docker help查询命令。

docker search  #从docker搜索镜像 Search the Docker Hub for images

docker pull #拉取镜像  Pull an image or a repository from a registry

#拉取的时候可以加上版本号,或者拉取最新的

docker ps #查看当前运行的镜像

docker ps -a #查看所有的,包括停止运行的

docker rename #给容器修改名字  Rename a container

docker restart #重启容器  Restart one or more containers

docker run #创建容器Run a command in a new container

docker rm #删除容器Remove one or more containers

docker 安装mysql

#拉取mysql

docker pull mysql

#创建容器

docker run -itd -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

#查看容器

docker ps

docker ps查看mysql

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c71ff8eff881 mysql “docker-entrypoint.s…” 40 hours ago Up 18 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql

命令创建数据库

命令登录mysql

docker exec -it mysql bash

#登录mysql

mysql -u root -p

操作数据库

#创建数据库

create database dbname;

#创建数据库test

create database test;  

#查看数据库

show databases;

#使用选择数据库

use database;  

use test;//Database changed

引入依赖

<!--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.47</version>

   </dependency>

yml配置

需要配置数据库连接信息以及jpa信息

server:

 port: 8812

spring:

 application:

   name: SpringbootJPA

 #配置数据库

 datasource:

   url: jdbc:mysql://数据库ip:3306/test

   driver-class-name: com.mysql.jdbc.Driver

   username: root

   password: 123456

 jpa:

   hibernate:

     ddl-auto: update #更新或者创建数据表结构

     dialect: org.hibernate.dialect.MySQL8Dialect

   show-sql: true  #控制台显示SQL

创建实体类

package com.elite.springboot.Entity;

import lombok.Data;

import lombok.Getter;

import lombok.Setter;

import org.springframework.data.annotation.Id;

import javax.persistence.*;

//使用JPA注解配置映射关系

@Entity //告诉JPA这是一个实体类(和数据表映射的类)

@Table(name = "user") //@Table,指定表明,不指定默认和类名字一样

@Getter

@Setter

@Data

public class User {

   @javax.persistence.Id

   @Id //这是一个主键

   @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键

   private Integer id;

   @Column(name = "user_name", length = 50) //这是和数据表对应的一个列

   private String username;

   @Column(name = "age", length = 3) //这是和数据表对应的一个列

   private Integer age;

   @Column //省略默认列名就是属性名

   private String address;

}

创建一个接口UserDao来操作实体类对应的表

package com.elite.springboot.Dao;

import com.elite.springboot.Entity.User;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.stereotype.Repository;

/**

* 编写一个UserDao接口来操作实体类User对应的数据表

*/

@Repository

public interface UserDao extends JpaRepository<User,Integer> {

}

提供的核心接口源码

//查找所有的

List<T> findAll();

List<T> findAll(Sort var1);

List<T> findAllById(Iterable<ID> var1);

<S extends T> List<S> saveAll(Iterable<S> var1);

void deleteInBatch(Iterable<T> var1);

void deleteAllInBatch();

//根据ID获取

T getOne(ID var1);

<S extends T> List<S> findAll(Example<S> var1);

<S extends T> List<S> findAll(Example<S> var1, Sort var2);

应用启动类

package com.elite.springboot;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication

//需要扫描实体

@EntityScan("com.elite.springboot.Entity")

public class SpringbootJPA {

   public static void main(String[] args) {

       SpringApplication.run(SpringbootJPA.class,args);

   }

}

测试CRUD

package com.elite.springboot;

import com.elite.springboot.Dao.UserDao;

import com.elite.springboot.Entity.User;

import lombok.extern.slf4j.Slf4j;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

import java.util.List;

/**

* 测试User CRUD

*/

@Slf4j

@RunWith(SpringRunner.class)

@SpringBootTest

public class AppTest {

   @Resource

   private UserDao userDao;

   /**

    * 测试新增User

    * @throws Exception

    */

   @Test

   public void insertUser(){

       //select * from user

       //插入的sql日志:insert into user (address, age, user_name) values (?, ?, ?)

       User user = new User();

       user.setUsername("牛奶糖");

       user.setAge(22);

       user.setAddress("xx省市");

       User save = userDao.save(user);

   }

   /**

    * 更新User

    * @throws Exception

    */

   @Test

   public void updateUser() {

       //更新也是调用save方法

       //update user set address=?, age=?, user_name=? where id=?

       User user = new User();

       user.setUsername("牛奶糖");

       user.setId(1);

       user.setAge(24);

       user.setAddress("xx省市");

       userDao.save(user);

   }

   /**

    * 查询用户

    * @throws Exception

    */

   @Test

   public void getUser() {

       User user = userDao.getOne(1);

       System.out.println(user);

   }

   /**

    * 查询用户列表

    */

   @Test

   public void getUserList()  {

       //select user0_.id as id1_0_, user0_.address as address2_0_, user0_.age as age3_0_, user0_.user_name as user_nam4_0_ from user user0_

       List<User> userList = userDao.findAll();

       for (User user:userList){

           System.out.println(user);

       }

       //User(id=1, username=牛奶糖, age=24, address=xx省市)

       //User(id=2, username=tom, age=22, address=guangzhou)

   }

   /**

    * 删除用户

    */

   @Test

   public void DelUser()  {

       //delete from user where id=?

      userDao.deleteById(2);

   }

}


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
230 2
|
2月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
303 3
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
556 5
|
6月前
|
Java API 数据库
JPA简介:Spring Boot环境下的实践指南
上述内容仅是JPA在Spring Boot环境下使用的冰山一角,实际的实践中你会发现更深更广的应用。总而言之,只要掌握了JPA的规则,你就可以借助Spring Boot无比丰富的功能,娴熟地驾驶这台高性能的跑车,在属于你的程序世界里驰骋。
222 15
|
8月前
|
SQL Java 编译器
深入理解 Spring Data JPA 的导入与使用:以 UserRepository为例
本文深入解析了 Spring Data JPA 中 `UserRepository` 的导入与使用。通过示例代码,详细说明了为何需要导入 `User` 实体类、`JpaRepository` 接口及 `@Repository` 注解。这些导入语句分别用于定义操作实体、提供数据库交互方法和标识数据访问组件。文章还探讨了未导入时的编译问题,并展示了实际应用场景,如用户保存、查询与删除操作。合理使用导入语句,可让代码更简洁高效,充分发挥 Spring Data JPA 的优势。
473 0
|
11月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
11月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
|
11月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
11月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
SQL 缓存 监控
SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)
SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)保姆级教程超详细,Druid配置信息等等。
4651 0
SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)

热门文章

最新文章