一、创建步骤



二、目录结构

三、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.然后执行打包操作

启动

SpringBoot JPA相关推荐

  1. 解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题)

    解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题) 参考文章: (1)解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题) (2)https: ...

  2. java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收

    1.需求 我的需求是统计域名以及域名出现的次数. 之前使用springboot jpa都是把数据库中的表跟实体类绑定,创建继承JpaRepository的接口.如下: @Repository publ ...

  3. springboot+jpa+mybatis 多数据源支持

    springboot+jpa+mybatis 多数据源支持 配置dataSource import org.springframework.beans.factory.annotation.Quali ...

  4. springboot+jpa+mysql+redis+swagger整合步骤

    springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置r ...

  5. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离

    相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...

  6. 补习系列(19)-springboot JPA + PostGreSQL

    目录 SpringBoot 整合 PostGreSQL 一.PostGreSQL简介 二.关于 SpringDataJPA 三.整合 PostGreSQL A. 依赖包 B. 配置文件 C. 模型定义 ...

  7. springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法

    springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法 参考文章: (1)springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出 ...

  8. springboot+jpa+mysql Springboot+jpa+jdbc+sqlserver 使用时遇到的一系列的问题

    更改背景 正在做一个微信小程序的前后端项目,一开始使用的是springboot+jpa+mysql,但负责接受数据存入数据库的负责人执意要用sqlserver.本来微信小程序前端,以及spring b ...

  9. 全网最全精析破解 Springboot+Jpa 对数据库增删改查

    前言: 昨天做的是springboot+mybatis 对数据库进行增删改查 但是我感觉配置文件太多了 很麻烦 繁琐 今天搞一下springboot+Jpa对数据库进行增删改查, 感觉很好用 ,所以记 ...

  10. 基于SpringBoot+jpa+Erupt的出入登记签到打卡系统

    目录 基于 SpringBoot + jpa + Erupt 后台框架开发的综合签到打卡系统 1 一.项目背景及需求分析 1 直接选择 ==> 用户 [不安全/不可靠] 1 用户名 + 密码 查 ...

最新文章

  1. 使用boost.python进行混合开发
  2. 显示器选三星还是飞利浦_如何为飞利浦色相灯设置计时器
  3. Java成神之路——重入锁、公平非公平锁、自旋锁、读写锁
  4. 实用素材|UI设计师需要的输入框和表单
  5. 【报告分享】2020中国企业数字化转型研究报告-清华大学.pdf(附下载链接)
  6. python计算平面的法向-利用协方差矩阵求解特征值和特征向量
  7. 深度学习简明教程系列 —— 基础知识(合集)
  8. ExoPlayer 源码阅读小记--缓存模块及获取HLS已缓存大小
  9. python数据透视表怎么存下来_大数据分析如何利用Python创建数据透视表?
  10. Steam游戏导入vrPlus中运行
  11. 计算机设计大赛山东,第十届中国大学生计算机设计大赛山东赛区颁奖典礼在我校举办...
  12. Github和Git是啥意思?下面来简单了解下。
  13. Spark 学习笔记——001【spark-mysql+spark-hive】
  14. python中selenium关于滚动条的循环下拉滚动操作---滚动条操作
  15. U盘修复“系统找不到指定文件”问题记录
  16. uni-app时间格式转换
  17. 客户旅程_从编码训练营到报价—我的1280小时旅程
  18. 华为2288H V5 重装系统无法开机问题
  19. 中国手机号段分部情况
  20. Simscape Multibody简介与入门(上) 准备工作

热门文章

  1. java github_GitHub Research:超过50%的Java记录语句写错了
  2. Java与Python:哪一个最适合您? [信息图]
  3. arcgis adf数据_使用ADF列表视图的主从数据
  4. java 自定义运算符_Java中集合的自定义运算符
  5. gradle入门_Gradle入门:集成测试
  6. HATEOAS的RESTful服务。 记录超媒体API
  7. java 8 集合分组_Java 8:按集合分组
  8. Spring-Boot 2.1.x和主要的bean定义
  9. Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String
  10. java和golang性能_Java本质和性能