怎么在SpringBoot利用Mybatis实现一个登录注册页面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.环境
jdk8 : “1.8.0_281”
Maven: 3.6.3
Idea:2020.2
Mysql:5.6.40
Navicat:10.1.7
选择依赖如下:
Web下的Spring Web。
Template Engines下的Thymeleaf。
SQL下的JDBC API、Spring Data JDBC、MySQL Driver。
项目的结构:

4.0.0 org.springframework.boot spring-boot-starter-parent 2.4.3 com.haungkd weblogindemo 0.0.1-SNAPSHOT weblogindemo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.3 org.projectlombok lombok 1.18.12 provided com.alibaba druid 1.2.3 org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.xmlunit xmlunit-core org.mybatis mybatis 3.4.6 org.springframework.boot spring-boot-maven-plugin

yml文件配置:
其中url中的数据库记得对应,我的库为login
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/login?serverTimezone=GMT%2B8&useSSL=true username: root #数据库 password: 123456 #密码
properties文件配置:
#端口号 server.port=8088 #druid数据库连接池 type=com.alibaba.druid.pool.DruidDataSource #清除缓存 spring.thymeleaf.cache=false #配置mapper mybatis.mapper-locations=classpath:mapper/*.xml
package com.huangkd.weblogindemo.pojo;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data // get/set 方法
@AllArgsConstructor//有参构造器
@NoArgsConstructor//无参构造器
@Table(name = "userlogin")
public class UserLogin {
private String username;
private String password;
public String getUsername() {
return username;
}
}
我创建login库,创建userlogin表,字段为username和password

在IDEA右边选择:
Database——> ——> Data Source——> Mysql

如果测试不通:出现如下:
Server returns invalid timezone. Need to set ‘serverTimezone' property.
是数据库时区问题
解决方法:
打开开最右侧 Advanced,找到 serverTimezone,在右侧value处填写 GMT,保存即可
在mapper包下建UserLoginMapper接口
package com.huangkd.weblogindemo.mapper;
import com.huangkd.weblogindemo.pojo.UserLogin;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserLoginMapper {
//定义增删改查方法
//查询所有
public List queryAll();
//添加数据
public int add(UserLogin userLogin);
//根据用户名查询
public UserLogin queryByUsername(String username);
} 在resources下建UserLoginMapper.xml文件
insert into userlogin values (#{username},#{password})
在services下新建接口UserLoginServicesI和类UserLoginServicesImpl
UserLoginServicesI接口:
import com.huangkd.weblogindemo.pojo.UserLogin;
import java.util.List;
public interface UserLoginServicesl {
//查询所有
public List queryAll();
//添加数据
public int add(UserLogin userLogin);
//根据用户名查询
public UserLogin queryByUsername(String username);
} UserLoginServicesImpl类:
package com.huangkd.weblogindemo.services;
import com.huangkd.weblogindemo.mapper.UserLoginMapper;
import com.huangkd.weblogindemo.pojo.UserLogin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserLoginServicesImpl implements UserLoginServicesl {
@Autowired
//Service层调用dao层/mapper层 一般在service层中创建一个dao/mapper层对象
//用对象调用对应的增删改查方法
UserLoginMapper userLoginMapper;
@Override
public List queryAll() {
return userLoginMapper.queryAll();
}
@Override
public int add(UserLogin userLogin) {
return userLoginMapper.add(userLogin);
}
@Override
public UserLogin queryByUsername(String username) {
return userLoginMapper.queryByUsername(username);
}
} 在controller包下创建MyController类:
package com.huangkd.weblogindemo.controller;
import com.huangkd.weblogindemo.pojo.UserLogin;
import com.huangkd.weblogindemo.services.UserLoginServicesImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyController {
//controller层调用service层
//创建一个service层对象
@Autowired
UserLoginServicesImpl userLoginServices;
//登录
@RequestMapping("/toLogin")
public String toLogin() {
return "login";
}
@RequestMapping("/loginSuccess")
public String loginSuccess(Model model, UserLogin userLogin) {
//查询用户名是否存在
UserLogin userLogin1 = userLoginServices.queryByUsername(userLogin.getUsername());
if (userLogin1 != null) { //如果用户名存在
if (userLogin1.getPassword().equals(userLogin.getPassword())) {
System.out.println(userLogin1.toString());
return "success";
} else {
model.addAttribute("data", "密码不正确");
return "login";
}
} else { //用户名不存在,直接返回到登录页面
model.addAttribute("data", "该用户不存在,请先注册");
return "login";
}
}
//注册
@RequestMapping("/toRegister")
public String toRegister() {
return "register";
}
@RequestMapping("/toRegisterSuccess")
public String toRegisterSuccess(Model model,UserLogin userLogin) {
//添加一条记录到数据库中
int add = userLoginServices.add(userLogin);
System.out.println("插入数据成功");
model.addAttribute("data","注册成功,请登录");
return "login";
}
}
login.html:登录页面
login 登录界面
regsister.html:注册页面
register 注册界面
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联网站建设公司,的支持。
Copyright © 2009-2022 www.fjjierui.cn 青羊区广皓图文设计工作室(个体工商户)达州站 版权所有 蜀ICP备19037934号