〇、参考资料1、hutool介绍
https://blog.csdn.net/abst122/article/details/124091375
2、Spring Boot+Mybatis实现登录注册
https://www.cnblogs.com/wiki918/p/16221758.html
3、Spring Boot读取自定义配置文件
https://www.yisu.com/zixun/366877.html
4、Spring Boot读取properties配置文件的两种方式
https://blog.csdn.net/weixin_42352733/article/details/121830775
一、概述1、技术栈
Spring Boot+Mybatis+Lombok+Hutool+Slf4j+thymeleaf
2、项目截图
二、登录注册(后台)1、数据库设计
表结构:
表数据:
建表语句:
CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '用户表id', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `phone` varchar(20) DEFAULT NULL COMMENT '手机号', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表'
2、POJO(Entity)编写-UserBean.java
package com.boulderaitech.entity;import com.fasterxml.jackson.annotation.JsonFormat;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.Date;@Data //提供了set、get方法及toString@AllArgsConstructor@NoArgsConstructorpublic class UserBean implements Serializable { private Integer id; //为什么用Integer,不用int private String username; private String password; private String email; private String phone; @JsonFormat(pattern = "yyyy-MM-mm HH:mm:ss") private Date create_time; @JsonFormat(pattern = "yyyy-MM-mm HH:mm:ss") private Date update_time;}
3、Controller编写-UserController.java
package com.boulderaitech.controller;import cn.hutool.core.lang.Opt;import cn.hutool.core.util.StrUtil;import com.boulderaitech.entity.UserBean;import com.boulderaitech.service.UserService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Slf4j@Controller // 不能用@RestControllerpublic class UserController { //将Service注入Web层 @Autowired UserService userService; //用户测试 @RequestMapping("/hello") public String hello() { return "login"; } @RequestMapping("https://www.cnblogs.com/register") public String register() { return "signup"; } @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(String username,String password) { UserBean userBean = userService.login(username,password); log.info("username:{}",username); log.info("password:{}",password); //hutool-core核心,包括Bean操作、日期、各种Util等 if(StrUtil.isNotEmpty(username)) { if(userBean != null) { return "success"; //方法引用-遍历集合 //Opt.ofEmptyAble(userBean).ifPresent(System.out::println); } } else { return "用户名不允许为空"; } return "error"; } @RequestMapping(value = "/signup", method = RequestMethod.POST) public String signup(String username,String password) { userService.insert(username,password); return "success"; }}
4、Service编写-UserService.java
package com.boulderaitech.service;import com.boulderaitech.entity.UserBean;import com.boulderaitech.mapper.UserMapper;import org.springframework.stereotype.Service;import javax.annotation.Resource;@Servicepublic class UserService { //将dao层属性注入service层,为什么不用Autowired @Resource private UserMapper userMapper; public UserBean login(String username, String password) { return userMapper.getInfo(username,password); } public void insert(String username, String password) { userMapper.saveUser(username,password); }}
5、Mapper编写-UserMapper.java
package com.boulderaitech.mapper;import com.boulderaitech.entity.UserBean;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;@Mapper //添加Mapper注解,就不用写xml的mapper映射文件了public interface UserMapper { //多个参数要加@Param修饰 //思考:xml中的代码片段怎么配 @Select("SELECT * FROM user WHERE username=#{username} AND password= #{password}") UserBean getInfo(@Param("username") String username,@Param("password") String password); @Insert("INSERT INTO user(username,password) VALUE(#{username},#{password})") void saveUser(@Param("username") String username,@Param("password") String password);}
6、配置文件编写-application.properties
# Spring Boot端口号server.port=9088# 数据源配置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.password=qaz123spring.datasource.username=rootspring.datasource.url=jdbc:mysql://192.168.40.111:3306/visualization?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=truespring.thymeleaf.prefix=classpath:/templates/
7、启动类编写-KettleProcessorApplication.java
package com.boulderaitech;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * Spring Boot启动类,加Spring Boot注解,调用Spring的静态run方法 */@SpringBootApplicationpublic class KettleProcessorApplication { public static void main(String[] args) { SpringApplication.run(KettleProcessorApplication.class); }}
三、登录注册(前台)1、登录页面-login.html
login 账号:
密码:
注册
2、注册页面-signup.html
注册 请输入姓名:
请输入密码:
3、成功页面-success.html
success 欢迎,恭喜登录成功/注册成功
4、失败页面-error.html
error 登录失败!
四、配置读取1、配置编写-kettle.properties
# 读取properties的两种方式:https://blog.csdn.net/weixin_42352733/article/details/121830775environment=xuelei-wwwkettle.repository.type=databasekettle.repository.username=adminkettle.repository.password=admin
2、POJO(Entity)编写-KettleRepositoryBean.java
package com.boulderaitech.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Data@Component@NoArgsConstructor@AllArgsConstructor@ConfigurationProperties(prefix = "kettle.repository")public class KettleRepositoryBean { private String type; private String username; private String password;}
3、Controller编写-PropertiesController.java
package com.boulderaitech.controller;import com.boulderaitech.entity.KettleRepositoryBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController //Controller和RestCOntroller的区别@PropertySource("classpath:kettle.properties") //默认是application.propertiespublic class PropertiesController { @Value("${environment}") private String envName; @Autowired private KettleRepositoryBean kettleRepositoryBean; @RequestMapping("/getEnv") public String getEnv() { return "hello " + envName; } @RequestMapping("/getRepoInfo") public String getRepoInfo() { return "hello " + kettleRepositoryBean.toString(); }}
五、验证1、登录
2、注册
3、读取单个配置
4、读取实体类配置(多个)
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16937229.html