Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

[复制链接]
发表于 2022-11-30 01:35:10 | 显示全部楼层 |阅读模式
〇、参考资料

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、数据库设计

表结构:

表数据:

建表语句:
  1. CREATE TABLE `user` (
  2.   `id` int NOT NULL AUTO_INCREMENT COMMENT '用户表id',
  3.   `username` varchar(50) NOT NULL COMMENT '用户名',
  4.   `password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
  5.   `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  6.   `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
  7.   `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  8.   `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间',
  9.   PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表'
复制代码
2、POJO(Entity)编写-UserBean.java
  1. package com.boulderaitech.entity;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import lombok.AllArgsConstructor;
  4. import lombok.Data;
  5. import lombok.NoArgsConstructor;
  6. import java.io.Serializable;
  7. import java.util.Date;
  8. @Data //提供了set、get方法及toString
  9. @AllArgsConstructor
  10. @NoArgsConstructor
  11. public class UserBean implements Serializable {
  12.     private Integer id; //为什么用Integer,不用int
  13.     private String username;
  14.     private String password;
  15.     private String email;
  16.     private String phone;
  17.     @JsonFormat(pattern = "yyyy-MM-mm HH:mm:ss")
  18.     private Date create_time;
  19.     @JsonFormat(pattern = "yyyy-MM-mm HH:mm:ss")
  20.     private Date update_time;
  21. }
复制代码
3、Controller编写-UserController.java
  1. package com.boulderaitech.controller;
  2. import cn.hutool.core.lang.Opt;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.boulderaitech.entity.UserBean;
  5. import com.boulderaitech.service.UserService;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. @Slf4j
  12. @Controller // 不能用@RestController
  13. public class UserController {
  14.     //将Service注入Web层
  15.     @Autowired
  16.     UserService userService;
  17.     //用户测试
  18.     @RequestMapping("/hello")
  19.     public String hello() {
  20.         return "login";
  21.     }
  22.     @RequestMapping("/register")
  23.     public String register() {
  24.         return "signup";
  25.     }
  26.     @RequestMapping(value = "/login", method = RequestMethod.POST)
  27.     public String login(String username,String password) {
  28.         UserBean userBean = userService.login(username,password);
  29.         log.info("username:{}",username);
  30.         log.info("password:{}",password);
  31.         //hutool-core        核心,包括Bean操作、日期、各种Util等
  32.         if(StrUtil.isNotEmpty(username)) {
  33.             if(userBean != null) {
  34.                 return "success";
  35.                 //方法引用-遍历集合
  36.                 //Opt.ofEmptyAble(userBean).ifPresent(System.out::println);
  37.             }
  38.         } else {
  39.             return "用户名不允许为空";
  40.         }
  41.         return "error";
  42.     }
  43.     @RequestMapping(value = "/signup", method = RequestMethod.POST)
  44.     public String signup(String username,String password) {
  45.         userService.insert(username,password);
  46.         return "success";
  47.     }
  48. }
复制代码
4、Service编写-UserService.java
  1. package com.boulderaitech.service;
  2. import com.boulderaitech.entity.UserBean;
  3. import com.boulderaitech.mapper.UserMapper;
  4. import org.springframework.stereotype.Service;
  5. import javax.annotation.Resource;
  6. @Service
  7. public class UserService {
  8.     //将dao层属性注入service层,为什么不用Autowired
  9.     @Resource
  10.     private UserMapper userMapper;
  11.     public UserBean login(String username, String password) {
  12.         return userMapper.getInfo(username,password);
  13.     }
  14.     public void insert(String username, String password) {
  15.         userMapper.saveUser(username,password);
  16.     }
  17. }
复制代码
5、Mapper编写-UserMapper.java
  1. package com.boulderaitech.mapper;
  2. import com.boulderaitech.entity.UserBean;
  3. import org.apache.ibatis.annotations.Insert;
  4. import org.apache.ibatis.annotations.Mapper;
  5. import org.apache.ibatis.annotations.Param;
  6. import org.apache.ibatis.annotations.Select;
  7. @Mapper //添加Mapper注解,就不用写xml的mapper映射文件了
  8. public interface UserMapper {
  9.     //多个参数要加@Param修饰
  10.     //思考:xml中的<include>代码片段怎么配
  11.     @Select("SELECT * FROM user WHERE username=#{username} AND password= #{password}")
  12.     UserBean getInfo(@Param("username") String username,@Param("password") String password);
  13.     @Insert("INSERT INTO user(username,password) VALUE(#{username},#{password})")
  14.     void saveUser(@Param("username") String username,@Param("password") String password);
  15. }
复制代码
6、配置文件编写-application.properties
  1. # Spring Boot端口号
  2. server.port=9088
  3. # 数据源配置
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  5. spring.datasource.password=qaz123
  6. spring.datasource.username=root
  7. spring.datasource.url=jdbc:mysql://192.168.40.111:3306/visualization?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
  8. spring.thymeleaf.prefix=classpath:/templates/
复制代码
7、启动类编写-KettleProcessorApplication.java
  1. package com.boulderaitech;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * Spring Boot启动类,加Spring Boot注解,调用Spring的静态run方法
  6. */
  7. @SpringBootApplication
  8. public class KettleProcessorApplication {
  9.     public static void main(String[] args) {
  10.         SpringApplication.run(KettleProcessorApplication.class);
  11.     }
  12. }
复制代码
三、登录注册(前台)

1、登录页面-login.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <title>login</title>
  6. </head>
  7. <body>
  8. <form role="form" action = "/login" method="post">
  9.   账号:<input type="text" id="username" name = "username"> <br>
  10.   密码:<input type="password" id = "password" name = "password"> <br>
  11.   <input type="submit" id = "login" value = "登录">
  12. </form>
  13. <a target="_blank" href="https://www.cnblogs.com/register">注册</a>
  14. </body>
  15. </html>
复制代码
2、注册页面-signup.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>注册</title>
  6. </head>
  7. <body>
  8. <form role="form" action="/signup" method="post">
  9.     请输入姓名:<input type="text" name="username" id="name"><br>
  10.     请输入密码:<input type="password" name="password" id="password"><br>
  11.     <input type="submit" name="sign" value="提交">
  12. </form>
  13. </body>
  14. </html>
复制代码
3、成功页面-success.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>success</title>
  6. </head>
  7. <body>
  8. <h1>欢迎,恭喜登录成功/注册成功</h1>
  9. </body>
  10. </html>
复制代码
4、失败页面-error.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>error</title>
  6. </head>
  7. <body>
  8. <h1>登录失败!</h1>
  9. </body>
  10. </html>
复制代码
四、配置读取

1、配置编写-kettle.properties
  1. # 读取properties的两种方式:https://blog.csdn.net/weixin_42352733/article/details/121830775
  2. environment=xuelei-www
  3. kettle.repository.type=database
  4. kettle.repository.username=admin
  5. kettle.repository.password=admin
复制代码
2、POJO(Entity)编写-KettleRepositoryBean.java
  1. package com.boulderaitech.entity;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import org.springframework.boot.context.properties.ConfigurationProperties;
  6. import org.springframework.stereotype.Component;
  7. @Data
  8. @Component
  9. @NoArgsConstructor
  10. @AllArgsConstructor
  11. @ConfigurationProperties(prefix = "kettle.repository")
  12. public class KettleRepositoryBean {
  13.     private String type;
  14.     private String username;
  15.     private String password;
  16. }
复制代码
3、Controller编写-PropertiesController.java
  1. package com.boulderaitech.controller;
  2. import com.boulderaitech.entity.KettleRepositoryBean;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.PropertySource;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8. @RestController //Controller和RestCOntroller的区别
  9. @PropertySource("classpath:kettle.properties") //默认是application.properties
  10. public class PropertiesController {
  11.     @Value("${environment}")
  12.     private String envName;
  13.     @Autowired
  14.     private KettleRepositoryBean kettleRepositoryBean;
  15.     @RequestMapping("/getEnv")
  16.     public String getEnv() {
  17.         return "hello " + envName;
  18.     }
  19.     @RequestMapping("/getRepoInfo")
  20.     public String getRepoInfo() {
  21.         return "hello " + kettleRepositoryBean.toString();
  22.     }
  23. }
复制代码
五、验证

1、登录



2、注册



3、读取单个配置


4、读取实体类配置(多个)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表