前言:我是完成 整体使用和部署了 (也搞了很久)
到这一张就讲完最基础的获和交互
1.我因为本地连接尝试过一次出现
具体原因说 时差不对 需要替换为正确的时间格式:搜索这一句可以有很多百度解决方案
Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.
在连接Url加上这一串:?serverTimezone=GMT (这是我能找到最快的解决方案)
2.获取数据
不懂jpa框架人:移步这里看完介绍
3.看完后大概就基础了解原理了
我这对应贴出pom.xml
<?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="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>peng</artifactId>
<version>0.0.1</version>
<name>peng</name>
<packaging>jar</packaging>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- <!– 移除嵌入式tomcat插件 –>-->
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- 数据源-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 数据交互配置 jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- websocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- <plugin>-->
<!-- <artifactId>maven-war-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <failOnMissingWebXml>false</failOnMissingWebXml>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
<!-- 阿里云搭建了一个国内镜像http://maven.aliyun.com,跑起来速度很快,可以进行配置-->
<repositories>
<repository>
<id>nexus-aliyun</id>
<name>nexus-aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
这里我贴出application类数据
## 端口号
server.port=8087
#服务器配置 属性
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://数据库地址:3306/数据库名称?charset=utf8mb4&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=账号
spring.datasource.password=密码
# Hikari 数据源专用配置
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
# JPA 相关配置
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
#spring.jpa.hibernate.ddl-auto=create
上面要是前基本配置
这是接口定义图:上面
/**
* @author
* @data 2019/8/3
*/
@RestController
@RequestMapping("/yang")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/user/register")//登录
public ResponseResult<User> getUserInfo(@RequestParam String account, @RequestParam String password) {
System.out.print("account :"+account);
System.out.print("password :"+password);
UserDo userdo = userService.findByUser(account,password);
if (userdo == null){
return ResponseUtil.error( "error","账号或者密码错误");
}
User user = new User();
user.setMailbox(userdo.getMailbox());
user.setName(userdo.getName());
user.setAccount(userdo.getName());
return ResponseUtil.success( user);
}
}
以上有几点你们肯定有疑问的:
(1)
@RestController :标明接口文件
@RequestMapping("/yang") : 标明路径
@PostMapping("/user/register") :具体路径及请求方式
@Autowired (注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来 消除 set ,get方法。 这里可以不加的)
临时想起来:这个没介绍
ResponseResult 在返回数据哪里 :我自己定义返回结构别在意因为我还没上传demo 等我demo整理完成后过几天上传
注解使用看过上面基础会知道操作:不想看的请百度使用说明
(2)
private UserService userService; (主要是拿来做请求和数据处理)
这是几个就是完成我拿数据的全部操作:(介绍)
1.UserRepository
主要获取查询的数据内容 作用
import com.example.peng.entity.UserDo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface UserRepository extends PagingAndSortingRepository<UserDo,Long> {
//查询userDo表中所有数据,传入Pageable 分页参数,不需要自己手写
@Override
Page<UserDo> findAll(Pageable pageable);//内部方法
//根据 PagingAndSortingRepository 实现 对应的方法添加参数查询获取
UserDo findByName(String name);
//关联参数查询
UserDo findByNameAndPassword(String name,String password);
}
2.UserDo(重点介绍)
package com.example.peng.entity;
import javax.persistence.*;
import java.io.Serializable;
@Entity //设置这是一个 实体类对象
@Table(name = "user") //捆绑数据库名表名 记住要和数据库表名一致
public class UserDo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //设置主键 自增的
private Long id;
@Column(length = 32)
private String name;
@Column(length = 16)
private String password;
@Column(length = 36)
private String mailbox;
@Override
public String toString() {
return "UserDo{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", mailbox='" + mailbox + '\'' +
'}';
}
}
3.UserService (上面备注)
import com.example.peng.entity.repository.UserRepository;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private UserRepository userRepository;//对应上面 第一个请求的类
public UserDo findUserDo(long userId){
return userRepository.findById(userId).orElse(null);//只有查询 id 才有 orElse这个操作 意思是设置没有获取到返回 null
}
public UserDo findByname(String account){
return userRepository.findByName(account);
}
public UserDo findByUser(String name,String password){
return userRepository.findByNameAndPassword(name,password);
}
/**
* 如果不存在,则创建用户信息
*/
public UserDo createUserIfNotExist(String tel) {
UserDo userDo = findUserDoByTel(tel);//命名 有问题 查询对应数据
if (null == userDo) {//没有就创建
userDo = new UserDo();
userDo.setName(tel);
userDo.setMailbox(tel+"@163.com");
userDo.setPassword("123456");
saveUserDo(userDo);//这个方法就很意思 是你吧他和数据库捆绑后产生的 静态方法
}
return userDo; //返回创建后的数据
}
private UserDo findUserDoByTel(String tel){
return userRepository.findByName(tel);
}
public UserDo saveUserDo(UserDo userDo){
return userRepository.save(userDo);
}
}
没了
我运行一下给你们看看效果:有什么不懂就留言:或者 联系邮箱
@Autowired
private UserService userService;
@Autowired
private UserRepository userRepository;
注意这两个要一定要注释不然会报错:我今天尝试去除时候就报错了!
如有更新其他(或有不懂留言或者邮件):坚持分享技术(自由)
数据是对上的
谢谢观看,不放留个赞