SpringBoot JPA

一、创建步骤在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、目录结构

在这里插入图片描述

三、application.properties配置datasource

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost/springboot?userUnicode=true@characterEncoding=UTF8&serverTimezone=UTC

四、domain层创建实体类User

在这里插入图片描述

package com.willam.domain;import javax.persistence.*;/*** @author :lijunxuan* @date :Created in 2019/6/28  17:04* @description :* @version: 1.0*/
@Table(name = "user")
@Entity
public class User {@Id  //ID代表是主键@GeneratedValue(strategy = GenerationType.IDENTITY)  //按照主键自增private Integer id;//@Column(name="username")   //把数据库里的名字和当前名字做一个绑定关系private String  username;private String  password;private String  name;@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", name='" + name + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

五、Controller层UserController

在这里插入图片描述

package com.willam.Controller;import com.willam.Service.UserService;
import com.willam.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author :lijunxuan* @date :Created in 2019/6/28  17:02* @description :* @version: 1.0*/
@RestController
@RequestMapping("/user")
public class UserController {@AutowiredUserService userService;/*** 查询所有用户* @return*/@RequestMapping("/findAll")public List<User> findAll(){return userService.findAll();}/*** 通过ID查询用户* @param id* @return*/@RequestMapping("/findById")public User findById(Integer id){return userService.findById(id);}/*** 添加用户* @param user**/@RequestMapping("/add")public void add(User user){userService.add(user);}/*** 通过用户ID删除用户* @param id**/@RequestMapping("/deleteById")public void deleteById(Integer id){userService.deleteById(id);}}

六、service层

(1)UserService接口

package com.willam.Service;import com.willam.domain.User;import java.util.List;public interface UserService {/*** 查询所有用户信息* @return*/List<User> findAll();/*** 通过ID查询用户* @param id* @return*/User findById(Integer id);/*** 添加用户* @param user**/void add(User user);/*** 通过用户ID删除用户* @param id**/void deleteById(Integer id);
}

(2)UserServiceImpl实现类

package com.willam.Service.impl;import com.willam.Dao.UserDao;
import com.willam.Service.UserService;
import com.willam.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Optional;/*** @author :lijunxuan* @date :Created in 2019/6/28  17:27* @description :* @version: 1.0*/
@Service
public class UserServiceImpl implements UserService {@AutowiredUserDao userDao;@Overridepublic List<User> findAll() {return userDao.findAll();}@Overridepublic User findById(Integer id) {Optional<User> userById = userDao.findById(id);return userById.get();}@Overridepublic void add(User user) {userDao.save(user);}@Overridepublic void deleteById(Integer id) {userDao.deleteById(id);}
}

七、Dao层

在这里插入图片描述

package com.willam.Dao;import com.willam.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserDao extends JpaRepository<User,Integer> {
}

八、 集成Spring Data Redis

实现步骤:

  1. 添加Redis起步依赖
  2. 在application.properties中配置redis端口、地址
  3. 注入RedisTemplate操作Redis缓存查询所有用户数据
  4. 测试缓存

1. 添加Redis起步依赖

 <!--redis起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2. 在application.properties中配置redis端口、地址

# Redis 配置(不填也是可以的)
spring.redis.host=localhost
spring.redis.port=6379

3. 注入RedisTemplate操作Redis缓存查询所有用户数据

将Controller层的findAll方法修改一下

    @ResourceRedisTemplate redisTemplate;@RequestMapping("/findAll")public List<User> findAll(){/*如果第一次查询,redis缓存没有数据,就从数据库中获取如果有缓存数据,那么从缓存中获取*/String users = (String)redisTemplate.boundValueOps("userDao.findAll").get();if (users==null){//数据库查询List<User> all=userService.findAll();users = all.toString();redisTemplate.boundValueOps("userDao.findAll").set(users);  //把当前的数据缓存}return userService.findAll();}

4. 测试缓存

打一个断点
在这里插入图片描述
地址栏 发送请求 http://localhost:8080/user/findAll
在这里插入图片描述
后台
在这里插入图片描述
redis中有缓存则直接走 return userService.findAll();
在这里插入图片描述
在这里插入图片描述

九、 集成定时器

(1)在SpringbootJpaApplication开启定时器

在这里插入图片描述

(2)创建Timer类

在这里插入图片描述

package com.willam.Utils;import com.willam.Service.UserService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;/*** @author :lijunxuan* @date :Created in 2019/6/28  19:18* @description :* @version: 1.0*/
@Component //把当前的类加入spring容器
public class Timer {UserService userService;/*** 定时任务的配置* corn 表达式* fixedDelay 固定的延迟时间执行,上一个任务执行完成,多久之后下一个任务执行。* rateDelay 固定频率执行,每隔固定时间执行任务*/@Scheduled(fixedRate = 2000)public void task(){System.out.println(new Date());System.out.println(LocalDateTime.now());}
}

(3)测试结果

每隔2秒执行一次
在这里插入图片描述

十、SpringBoot如何代码测试

(1)加入依赖

 <!--springBoot的测试依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

(2)编写测试类:

  • SpringRunner继承SpringJUnit4ClassRunner,使用哪一个Spring提供的测试引擎都可以。指定运行测试的引擎
  • @SpringBootTest的属性值指的是引导类的字节码对象
package com.willam;import com.willam.Service.UserService;
import com.willam.domain.User;
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;@RunWith(SpringRunner.class)
@SpringBootTest //SpringBoot测试类
public class SpringbootJpaApplicationTests {@ResourceUserService userService;@Testpublic void contextLoads() {List<User> userList = userService.findAll();System.out.println(userList);}}

(3)测试结果

在这里插入图片描述

十一、Spring Boot 如何打包部署

(1)打成Jar包部署

在cmd切换到项目的路径
如:H:\workspace\IdeaProject\SpringBoot\day01\day01_springboot_jpa
在这里插入图片描述
在这里插入图片描述
启动命令:

java -jar target/day01_springboot_jpa-0.0.1-SNAPSHOT.jar

在这里插入图片描述
启动命令的时候配置jvm参数也是可以的。然后查看一下Java的参数配置结果

java -Xmx80m -Xms20m  -jar target/day01_springboot_demo01-1.0-SNAPSHOT.jar

小技巧

在这里插入图片描述

(2)打成War包部署

1.执行maven打包命令或者使用IDEA的Maven工具打包,需要修改pom.xml文件中的打包类型。

<packaging>war</packaging>

2. 注册启动类

  • 创建 ServletInitializer.java,继承 SpringBootServletInitializer ,覆盖 configure(),把启动类 Application 注册进去。外部 Web 应用服务器构建 Web Application Context 的时候,会把启动类添加进去

在这里插入图片描述

//web.xml
public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(DemoApplication.class);}
}

3.然后执行打包操作

在这里插入图片描述

启动

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 userdel -- 用于删除给定的用户以及与用户相关的文件

文章目录命令简介常用选项参考示例删除用户命令简介 userdel 命令用于删除指定的用户及与该用户相关的文件&#xff0c;英文全称即“user delete”。在 Debian 上&#xff0c;我们通常会使用 deluser 命令。 其实 userdel 命令实际上是修改了系统的用户账号文件 /etc/passwd、…

RestTemplate入门案例

一、创建步骤注意事项 二、目录结构 三、RestTemplateApplication层 package com.william;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; …

java 示例_功能Java示例 第5部分–将I / O移到外部

java 示例这是称为“ Functional Java by Example”的系列文章的第5部分。 在上一部分中&#xff0c;我们停止了对文档的变异&#xff0c;并返回了数据的副本。 现在&#xff0c;我们需要移走一些I / O。 如果您是第一次来&#xff0c;最好是从头开始阅读。 它有助于了解我们…

Linux 命令之 groupdel -- 删除指定的用户组

命令介绍 groupdel 命令用于删除指定的工作组&#xff0c;本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户&#xff0c;则必须先删除这些用户后&#xff0c;方能删除群组。 参考示例 删除指定用户组 删除 linuxcool 工作组&#xff1a; …

模拟微服务业务场景

一、创建步骤 模拟开发过程中的服务间关系。抽象出来&#xff0c;开发中的微服务之间的关系是生产者和消费者关系。 总目标&#xff1a;模拟一个最简单的服务调用场景&#xff0c;场景中保护微服务提供者(Producer)和微服务调用者(Consumer)&#xff0c;方便后面使用微服务架…

Linux 命令之 groupmod -- 更改群组识别码或名称

文章目录命令介绍常用选项参考示例命令介绍 groupmod 命令用于更改群组的识别码或名称时。不过大家还是要注意&#xff0c;用户名不要随意修改&#xff0c;组名和 GID 也不要随意修改&#xff0c;因为非常容易导致管理员逻辑混乱。如果非要修改用户名或组名&#xff0c;则建议…

cassandra使用心得_使用Spring Data Cassandra缓存的预备语句

cassandra使用心得今天&#xff0c;我有一篇简短的文章&#xff0c;内容涉及在Spring Data Cassandra中使用Prepared Statements。 Spring为您提供了一些实用程序&#xff0c;使您可以更轻松地使用“预备语句”&#xff0c;而不是依靠自己使用Datastax Java驱动程序手动注册查询…

注册中心 Spring Cloud Eureka

一、搭建eureka-server工程 目录结构 二、导入依赖 <?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…

Linux 用户(user)和用户组(group)管理概述

文章目录一、理解Linux的单用户多任务&#xff0c;多用户多任务概念二、用户(user&#xff09;和用户组&#xff08;group&#xff09;概念三、用户&#xff08;user&#xff09;和用户组&#xff08;group&#xff09;相关的配置文件、命令或目录一、理解Linux的单用户多任务&…

mockito java_Java:使用Mockito模拟ResultSet

mockito java这篇文章展示了如何使用Mockito模拟java.sql.ResultSet 。 它可用于帮助对ResultSet进行操作的单元测试代码&#xff08;例如ResultSetExtractor &#xff09;而无需依赖外部数据源。 您可以通过提供列名列表和2D数据数组来创建MockResultSet 。 例如&#xff1a;…

服务中心Eureka

一、服务消费者-注册服务中心 测试结果 二、消费者通过Eureka访问提供者 测试结果 Consumer ConsumerController package com.william.controller;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance;…

Linux 命令之 newgrp -- 登入另一个群组

文章目录命令介绍常用选项参考示例切换登录用户组命令介绍 newgrp 命令的英文全称为“new group”&#xff0c;使用该命令指定用户组名称&#xff0c;执行命令后&#xff0c;其实是以相同的用户名&#xff0c;但是以另一个群组名称&#xff0c;再次登入系统。所以本质上是切换…

pivotal_Spring Data Pivotal Gemfire教程

pivotal1. Spring Data Pivotal Gemfire –简介 在这篇文章中&#xff0c;我们将介绍有关Spring Data Pivotal Gemfire的全面教程。 Pivotal Gemfire是由Apache Geode支持的内存中数据网格解决方案。 使用Pivotal Gemfire构建的应用程序使您可以在分布式服务器节点之间轻松扩展…

Linux命令之 chsh -- 用来更换登录系统时使用的shell

文章目录命令简介常用选项参考示例查看系统安装了哪些shell的两种方法查看当前正在使用的 shell修改当前登录用户的shell命令简介 chsh 命令用来更换登录系统时使用的shell。若不指定任何参数与用户名称&#xff0c;则 chsh 会以应答的方式进行设置。 chsh 用于更改登录 shell…

layui绑定json_JSON-B非对称属性绑定

layui绑定jsonJSON-B规范定义了诸如JsonbProperty或JsonbTransient类的绑定注释&#xff0c;以声明方式将Java对象映射到JSON&#xff0c;然后又映射回JSON。 这些注释可以“非对称地”用于定义序列化和反序列化的不同处理。 如果在Java属性上或在getter和setter上都注释了JSO…

熔断器

一、引入依赖 1.consumer_service中加入依赖 <!--开启熔断器--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>2.开启熔断的注解 //注…

Linux 命令之 pwck -- 用来验证系统认证文件内容和格式的完整性

文章目录命令介绍常用选项参考示例检验用户配置文件 /etc/passwd和/etc/shadow的内容是否合法、完整命令介绍 pwck 命令用来校验用户配置文件 /etc/passwd 和 /etc/shadow 内容是否合法或完整 常用选项 选项说明-q仅报告错误信息-s以用户id排序文件“/etc/passwd”和“/etc/…

不停机与停机更新_Istio的零停机滚动更新

不停机与停机更新本系列文章的第一部分介绍了如何在Kubernetes集群中实现真正的零停机时间更新。 我们专门解决了将流量从旧实例切换到新实例时出现的请求失败。 本文将展示如何使用Istio群集实现相同的目标。 服务网格技术&#xff08;例如Istio&#xff09;通常与容器编排结…

远程调用 Spring Cloud Feign

一、 Feign简介 Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口&#xff0c;然后在上面添加注解。不再需要拼接URL&#xff0c;参数等操作。项目主页&#xff1a;https://github.com/Ope…

Linux 命令之 pwconv -- 开启用户的投影密码

命令介绍 该命令根据文件 /etc/passwd 创建影子文件 /etc/shadow。 用来开启用户的投影密码。Linux系统里的用户和群组密码&#xff0c;本来分别存放在名称为 passwd 和 group 的文件中&#xff0c; 这两个文件位于 /etc 目录下。因系统运作所需&#xff0c;任何人都得以读取…