怎么在SpringBoot利用Mybatis實(shí)現(xiàn)一個(gè)登錄注冊(cè)頁面?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司專注服務(wù)器托管服務(wù)十多年,提供服務(wù)器租用、網(wǎng)頁空間、主機(jī)域名、云服務(wù)器、云主機(jī)租用、雅安服務(wù)器托管、建站等服務(wù)1.環(huán)境
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。
項(xiàng)目的結(jié)構(gòu):
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中的數(shù)據(jù)庫記得對(duì)應(yīng),我的庫為login
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/login?serverTimezone=GMT%2B8&useSSL=true username: root #數(shù)據(jù)庫 password: 123456 #密碼
properties文件配置:
#端口號(hào) server.port=8088 #druid數(shù)據(jù)庫連接池 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//有參構(gòu)造器 @NoArgsConstructor//無參構(gòu)造器 @Table(name = "userlogin") public class UserLogin { private String username; private String password; public String getUsername() { return username; } }
我創(chuàng)建login庫,創(chuàng)建userlogin表,字段為username和password
在IDEA右邊選擇:
Database——> ——> Data Source——> Mysql
如果測(cè)試不通:出現(xiàn)如下:
Server returns invalid timezone. Need to set ‘serverTimezone' property.
是數(shù)據(jù)庫時(shí)區(qū)問題
解決方法:
打開開最右側(cè) Advanced,找到 serverTimezone,在右側(cè)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 ListqueryAll(); //添加數(shù)據(jù) public int add(UserLogin userLogin); //根據(jù)用戶名查詢 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 ListqueryAll(); //添加數(shù)據(jù) public int add(UserLogin userLogin); //根據(jù)用戶名查詢 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層調(diào)用dao層/mapper層 一般在service層中創(chuàng)建一個(gè)dao/mapper層對(duì)象 //用對(duì)象調(diào)用對(duì)應(yīng)的增刪改查方法 UserLoginMapper userLoginMapper; @Override public ListqueryAll() { return userLoginMapper.queryAll(); } @Override public int add(UserLogin userLogin) { return userLoginMapper.add(userLogin); } @Override public UserLogin queryByUsername(String username) { return userLoginMapper.queryByUsername(username); } }
在controller包下創(chuàng)建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層調(diào)用service層 //創(chuàng)建一個(gè)service層對(duì)象 @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", "該用戶不存在,請(qǐng)先注冊(cè)"); return "login"; } } //注冊(cè) @RequestMapping("/toRegister") public String toRegister() { return "register"; } @RequestMapping("/toRegisterSuccess") public String toRegisterSuccess(Model model,UserLogin userLogin) { //添加一條記錄到數(shù)據(jù)庫中 int add = userLoginServices.add(userLogin); System.out.println("插入數(shù)據(jù)成功"); model.addAttribute("data","注冊(cè)成功,請(qǐng)登錄"); return "login"; } }
login.html:登錄頁面
login 登錄界面
regsister.html:注冊(cè)頁面
register 注冊(cè)界面
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。