目录
前言
相关技术:
二.搭建三层框架dao层、service层、controller层+实体model层:
三.实现登录注册接口
前言 相关技术:
框架:springboot
IDE: IDEA
数据库: MySQL
测试工具: Postman(非必须,但方便测试且安装和使用都挺简单的)
一.使用idea创建springboot项目步骤一:
步骤二:
二.搭建三层框架dao层、service层、controller层+实体model层:Controller(UI)界面控制层
Service(BLL)业务逻辑服务层
Dao(DAL),dao层也叫mapper层,数据持久层
model层也叫pojo层或者entity层包括实体函数层(具体实现)Domain类:表映射实体,类名名是表名,属性是字段,主要用于Java数据和数据库表的映射与类Dto:数据传输对象(Data Transfer Object),用于前后端数据交互,Dto用在Controller和Service层。
具体目录如下:
三.实现登录注册接口1.设计数据库列表
2.连接数据库
application.yml
#更改项目的端口号
server:
port: 8080
# 数据库数据源
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
3.根据框架特点,我们将自底向上开发,所以将按照model层-dao-service-serviceImpl-controller 的顺序逐步开发。
3.1 编写model层:
package com.example.demospringboot.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//User类主要用于Java数据和数据库表的映射
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String id;
private String username;
private String password;
private String phone;
private int isDelete;
}
package com.example.demospringboot.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//登录模块数据传输对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserLoginDto {
private String username;
private String password;
}
package com.example.demospringboot.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//注册模块数据传输对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserRegisterDto {
private String username;
private String password;
private String phone;
}
3.2 编写dao层(即mapper层)
package com.example.demospringboot.mapper;
import com.example.demospringboot.domain.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper //这个注解表示了本类是一个mybatis 的mapper类
//或者在主类写@MapperScan("com.example.demosprongboot.mapper")
@Repository
public interface UserMapper {
@Select(value = "select * from user where username=#{username} and password = #{password}")
//使用注解方式,也可用xml方式(编写.xml文件放在resources下且要在application.yml中配置localtion等)
User selectOneUser (User u);
//List queryUserList();
@Insert(value = "insert into user values (#{id},#{username},#{password},#{phone},#{isDelete})")
void insertUser(User U);
}
3.3 编写service层
package com.example.demospringboot.service;
import com.example.demospringboot.domain.User;
import java.util.List;
public interface UserService {
void saveUser(User u);
User selectUser(User u);
List findAll();
}
package com.example.demospringboot.service.impl;
import com.example.demospringboot.domain.User;
import com.example.demospringboot.mapper.UserMapper;
import com.example.demospringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void saveUser(User u){
u.setId(UUID.randomUUID().toString());
u.setIsDelete(0);
userMapper.insertUser(u);
}
@Override
public User selectUser(User u){
if(u.getUsername()==null||u.getPassword()==null){
return null;
}
return userMapper.selectOneUser(u);
}
}
3.4 编写controller层
package com.example.demospringboot.controller;
import com.example.demospringboot.domain.User;
import com.example.demospringboot.dto.UserLoginDto;
import com.example.demospringboot.dto.UserRegisterDto;
import com.example.demospringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController//@Controller 代表这个类会被springboot 接管
//被@Controller这个注解的类,中的所有方法,如果返回值是String,并且有具体的页面可以跳转,那么就会被视图解析器解析
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/save")//用@RequestMapping,则什么请求类型都可以
//restful接口风格,可以用不同的请求方式实现不同的效果
//使用@PathVariable注解,让方法参数的值对应绑到一个URL模板变量上
public String saveUser(@RequestBody UserRegisterDto userRegisterDto){
if(userRegisterDto ==null){
return " *** 作失败";
}
if(userRegisterDto.getUsername()==null|| userRegisterDto.getPassword()==null|| userRegisterDto.getPhone()==null){
return " *** 作失败";
}
User user=new User();
user.setUsername(userRegisterDto.getUsername());
user.setPassword(userRegisterDto.getPassword());
user.setPhone(userRegisterDto.getPhone());
if(!(userService.selectUser(user)==null)){
return "此账号与密码已重复";
}
userService.saveUser(user);
return " *** 作成功";
}
@PostMapping("/login")
public String loginIn(@RequestBody UserLoginDto userLoginDto){
if(userLoginDto==null){
return " *** 作失败";
}
User user=new User();
user.setUsername(userLoginDto.getUsername());
user.setPassword(userLoginDto.getPassword());
if(userService.selectUser(user)==null){
return "无此账号";
}
return "登录成功";
}
}
具体目录如下:
3.5 测试
参考链接:
(24条消息) springboot三层架构(4块)_魔图啊的博客-CSDN博客_springboot三层架构图
(24条消息) 快速上手Springboot项目(登录注册保姆级教程)_Maker_Hu的博客-CSDN博客_springboot登录
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)