使用IDEA创建Spring Boot项目, 整合Mybatis ,连接MySql数据库,实现简单的登录注册功能

前言:
这是本人的第一篇的博客,本人目前大三下学期,计算机专业,主要学习Java后端,之前学习Java都是使用的eclipse,现在刚刚接触IDEA,今天第一次使用IDEA搭建项目,所以在此记录一下搭建项目过程,也从此开启自己的写博客之旅。

思路:
1.首先创建一个保存用户信息的数据库(本人使用的MySQL)。
2.使用IDEA创建Spring Boot项目。
3.修改配置文件。
4.整合mybatis。
5.实现登录注册的业务逻辑与页面。

步骤:
一、新建数据库
1.使用Navicat for MySQL创建数据库,并新建用户信息表

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `zs_user`
-- ----------------------------
DROP TABLE IF EXISTS `zs_user`;
CREATE TABLE `zs_user` (
  `pk_user_id` varchar(32) NOT NULL COMMENT '用户主键id',
  `uuid` varchar(11) DEFAULT NULL COMMENT '用户的8位为随机id用作前端显示的唯一用户id',
  `user_name` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `mobile` varchar(20) DEFAULT NULL COMMENT '手机号',
  `nick_name` varchar(255) DEFAULT NULL COMMENT '昵称',
  `interest` varchar(255) DEFAULT NULL COMMENT '兴趣爱好',
  `gender` int(1) DEFAULT NULL COMMENT '姓别 1-男,0-女',
  `img_url` varchar(255) DEFAULT NULL COMMENT '头像',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `regist_time` datetime DEFAULT NULL COMMENT '注册时间',
  `status` int(1) DEFAULT NULL COMMENT '用户状态:0:异常 1:已删除',
  `area_id` int(11) DEFAULT NULL COMMENT '区域_id',
  `city_id` int(11) DEFAULT NULL COMMENT '市_id',
  `province_id` int(11) DEFAULT NULL COMMENT '省_id',
  PRIMARY KEY (`pk_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of zs_user
-- ----------------------------

二、使用IDEA创建Spring Boot项目。(百度安装IDEA)
1.打开IDE选择project,如下图:
在这里插入图片描述2.选择Spring Initializr,然后Next(如果没有此选项,请移步至第三步),如下图:
在这里插入图片描述3.如果没有Spring Initializr,选择File–>Settings–>Plugins,搜索Spring Boot,选择Spring Initializ,然后Install。
在这里插入图片描述4.根据自己需求修改项目名称。
在这里插入图片描述5.在左侧Web中选择Web,在Template Engines中选择Thymeleaf(模板),在SQL中选择MySQL、JDBC、MyBatis,然后Next,项目保存路径根据自己的电脑去修改。
在这里插入图片描述三、修改配置文件。
1.新建的项目中application.properties文件是空的,我们需要在里面去配置datasource,MySql的用户名与密码根据的自己的来,如下:

#port
server.port=8080
#datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zhou?noAccessToProcedureBodies=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver

四、使用spring boot整合mybatis。
1.在application.properties文件中添加mybatis配置。如下:

#mybatis
mybatis.type-aliases-package=com.zhou.entity
mybatis.mapper-locations=classpath:mapper/*.xml

2.在pom.xml文件中添加mybatis自动生成代码插件代码片段(添加在build中)

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- mybatis generator 自动生成代码插件 -->
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.1</version>
				<configuration>
					<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
					<overwrite>true</overwrite>
					<verbose>true</verbose>
				</configuration>
			</plugin>
		</plugins>
	</build>

3.在resource下创建generator文件夹,并在文件夹中创建generatorConfig.xml,其中targetPackage表示包名,targetProject表示mybatis自动生成的代码的存放文字,本人是放在本地磁盘中,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 选择你的本地的数据库驱动包-->
    <classPathEntry  location="F:\MySQL\mysql-connector\mysql-connector-java-5.1.46\mysql-connector-java-5.1.46-bin.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库连接驱动-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/zhou" userId="root" password="123456">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成实体类的包名和位置-->
        <javaModelGenerator targetPackage="com.zhou.entity.user" targetProject="E:/zhou-gene/entity">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成XML映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="resources.mapper" targetProject="E:/zhou-gene/mapper">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO接口的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.zhou.dao.user" targetProject="E:/zhou-gene/dao">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="zs_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

4.选择Run→Edit Configurations,然后选择maven,如果没有maven选项的就点击+号添加maven,如果还没有就去百度idea maven配置,在此就不做详细介绍了。接下来配置Command line,在后面写入:mybatis-generator:generate -e,修改Name,如下图:
在这里插入图片描述5.完成上述操作后,点击run,出现如下图表示成功生成。
在这里插入图片描述6.将生成的代码对应放在你事先设置的targetPackage中。
User用户实体类:

package com.zhou.entity.user;

import java.util.Date;

public class User {
    private String pkUserId;

    private String uuid;

    private String userName;

    private String password;

    private String mobile;

    private String nickName;

    private String interest;

    private Integer gender;

    private String imgUrl;

    private String email;

    private Date registTime;

    private Integer status;

    private Integer areaId;

    private Integer cityId;

    private Integer provinceId;

    public String getPkUserId() {
        return pkUserId;
    }

    public void setPkUserId(String pkUserId) {
        this.pkUserId = pkUserId == null ? null : pkUserId.trim();
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid == null ? null : uuid.trim();
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile == null ? null : mobile.trim();
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName == null ? null : nickName.trim();
    }

    public String getInterest() {
        return interest;
    }

    public void setInterest(String interest) {
        this.interest = interest == null ? null : interest.trim();
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl == null ? null : imgUrl.trim();
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    public Date getRegistTime() {
        return registTime;
    }

    public void setRegistTime(Date registTime) {
        this.registTime = registTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getAreaId() {
        return areaId;
    }

    public void setAreaId(Integer areaId) {
        this.areaId = areaId;
    }

    public Integer getCityId() {
        return cityId;
    }

    public void setCityId(Integer cityId) {
        this.cityId = cityId;
    }

    public Integer getProvinceId() {
        return provinceId;
    }

    public void setProvinceId(Integer provinceId) {
        this.provinceId = provinceId;
    }
}

UserMapper.java 是mapper接口类:

package com.zhou.dao.user;

import com.zhou.entity.user.User;
import com.zhou.entity.user.UserInfo;

public interface UserMapper {
    int deleteByPrimaryKey(String pkUserId);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(String pkUserId);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

}

UserMapper.xml是映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhou.dao.user.UserMapper" >
  <resultMap id="BaseResultMap" type="com.zhou.entity.user.User" >
    <id column="pk_user_id" property="pkUserId" jdbcType="VARCHAR" />
    <result column="uuid" property="uuid" jdbcType="VARCHAR" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="mobile" property="mobile" jdbcType="VARCHAR" />
    <result column="nick_name" property="nickName" jdbcType="VARCHAR" />
    <result column="interest" property="interest" jdbcType="VARCHAR" />
    <result column="gender" property="gender" jdbcType="INTEGER" />
    <result column="img_url" property="imgUrl" jdbcType="VARCHAR" />
    <result column="email" property="email" jdbcType="VARCHAR" />
    <result column="regist_time" property="registTime" jdbcType="TIMESTAMP" />
    <result column="status" property="status" jdbcType="INTEGER" />
    <result column="area_id" property="areaId" jdbcType="INTEGER" />
    <result column="city_id" property="cityId" jdbcType="INTEGER" />
    <result column="province_id" property="provinceId" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    pk_user_id, uuid, user_name, password, mobile, nick_name, interest, gender, img_url,
    email, regist_time, status, area_id, city_id, province_id
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    select
    <include refid="Base_Column_List" />
    from zs_user
    where pk_user_id = #{pkUserId,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
    delete from zs_user
    where pk_user_id = #{pkUserId,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.zhou.entity.user.User" >
    insert into zs_user (pk_user_id, uuid, user_name,
    password, mobile, nick_name,
    interest, gender, img_url,
    email, regist_time, status,
    area_id, city_id, province_id
    )
    values (#{pkUserId,jdbcType=VARCHAR}, #{uuid,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR},
    #{password,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, #{nickName,jdbcType=VARCHAR},
    #{interest,jdbcType=VARCHAR}, #{gender,jdbcType=INTEGER}, #{imgUrl,jdbcType=VARCHAR},
    #{email,jdbcType=VARCHAR}, #{registTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
    #{areaId,jdbcType=INTEGER}, #{cityId,jdbcType=INTEGER}, #{provinceId,jdbcType=INTEGER}
    )
  </insert>
  <insert id="insertSelective" parameterType="com.zhou.entity.user.User" >
    insert into zs_user
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="pkUserId != null" >
        pk_user_id,
      </if>
      <if test="uuid != null" >
        uuid,
      </if>
      <if test="userName != null" >
        user_name,
      </if>
      <if test="password != null" >
        password,
      </if>
      <if test="mobile != null" >
        mobile,
      </if>
      <if test="nickName != null" >
        nick_name,
      </if>
      <if test="interest != null" >
        interest,
      </if>
      <if test="gender != null" >
        gender,
      </if>
      <if test="imgUrl != null" >
        img_url,
      </if>
      <if test="email != null" >
        email,
      </if>
      <if test="registTime != null" >
        regist_time,
      </if>
      <if test="status != null" >
        status,
      </if>
      <if test="areaId != null" >
        area_id,
      </if>
      <if test="cityId != null" >
        city_id,
      </if>
      <if test="provinceId != null" >
        province_id,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="pkUserId != null" >
        #{pkUserId,jdbcType=VARCHAR},
      </if>
      <if test="uuid != null" >
        #{uuid,jdbcType=VARCHAR},
      </if>
      <if test="userName != null" >
        #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="mobile != null" >
        #{mobile,jdbcType=VARCHAR},
      </if>
      <if test="nickName != null" >
        #{nickName,jdbcType=VARCHAR},
      </if>
      <if test="interest != null" >
        #{interest,jdbcType=VARCHAR},
      </if>
      <if test="gender != null" >
        #{gender,jdbcType=INTEGER},
      </if>
      <if test="imgUrl != null" >
        #{imgUrl,jdbcType=VARCHAR},
      </if>
      <if test="email != null" >
        #{email,jdbcType=VARCHAR},
      </if>
      <if test="registTime != null" >
        #{registTime,jdbcType=TIMESTAMP},
      </if>
      <if test="status != null" >
        #{status,jdbcType=INTEGER},
      </if>
      <if test="areaId != null" >
        #{areaId,jdbcType=INTEGER},
      </if>
      <if test="cityId != null" >
        #{cityId,jdbcType=INTEGER},
      </if>
      <if test="provinceId != null" >
        #{provinceId,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.zhou.entity.user.User" >
    update zs_user
    <set >
      <if test="uuid != null" >
        uuid = #{uuid,jdbcType=VARCHAR},
      </if>
      <if test="userName != null" >
        user_name = #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        password = #{password,jdbcType=VARCHAR},
      </if>
      <if test="mobile != null" >
        mobile = #{mobile,jdbcType=VARCHAR},
      </if>
      <if test="nickName != null" >
        nick_name = #{nickName,jdbcType=VARCHAR},
      </if>
      <if test="interest != null" >
        interest = #{interest,jdbcType=VARCHAR},
      </if>
      <if test="gender != null" >
        gender = #{gender,jdbcType=INTEGER},
      </if>
      <if test="imgUrl != null" >
        img_url = #{imgUrl,jdbcType=VARCHAR},
      </if>
      <if test="email != null" >
        email = #{email,jdbcType=VARCHAR},
      </if>
      <if test="registTime != null" >
        regist_time = #{registTime,jdbcType=TIMESTAMP},
      </if>
      <if test="status != null" >
        status = #{status,jdbcType=INTEGER},
      </if>
      <if test="areaId != null" >
        area_id = #{areaId,jdbcType=INTEGER},
      </if>
      <if test="cityId != null" >
        city_id = #{cityId,jdbcType=INTEGER},
      </if>
      <if test="provinceId != null" >
        province_id = #{provinceId,jdbcType=INTEGER},
      </if>
    </set>
    where pk_user_id = #{pkUserId,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.zhou.entity.user.User" >
    update zs_user
    set uuid = #{uuid,jdbcType=VARCHAR},
    user_name = #{userName,jdbcType=VARCHAR},
    password = #{password,jdbcType=VARCHAR},
    mobile = #{mobile,jdbcType=VARCHAR},
    nick_name = #{nickName,jdbcType=VARCHAR},
    interest = #{interest,jdbcType=VARCHAR},
    gender = #{gender,jdbcType=INTEGER},
    img_url = #{imgUrl,jdbcType=VARCHAR},
    email = #{email,jdbcType=VARCHAR},
    regist_time = #{registTime,jdbcType=TIMESTAMP},
    status = #{status,jdbcType=INTEGER},
    area_id = #{areaId,jdbcType=INTEGER},
    city_id = #{cityId,jdbcType=INTEGER},
    province_id = #{provinceId,jdbcType=INTEGER}
    where pk_user_id = #{pkUserId,jdbcType=VARCHAR}
  </update>
</mapper>

五、实现登录注册的业务逻辑与页面。
1.本人的项目结构如下:
在这里插入图片描述2.介绍一下个各类作用:
(1)DataUtils时间工具类,用于获取当前时间。

package com.zhou.common.utils;

import java.util.Date;

public class DataUtils {

    /**
     * 获取当前事件
     */
    public static Date getCurrentDate() {
        return new Date();
    }
}

(2)UUIDUtils是生成UUID的工具类(32位随机主键,与11位用户唯一标识id,此步主要用与本人以后需用)

package com.zhou.common.utils;

import java.util.Random;
import java.util.UUID;

/**
 *
 * @ClassName: UUIDUtils
 * @Description:  UUID生成工具,用于生成32位的UUID
 */
public final class UUIDUtils {

    public UUIDUtils() {

    }

    /**
     * 自动生成32位的UUID,对应数据库会员表的主键,进行插入用
     *
     * @return
     */
    public static String getPkUUID() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * 自动生成11位的UID,对应会员特殊标识
     *
     * @return
     */
    public static String getUserUUID() {
        Random random = new Random();
        String result = "";
        for (int i = 0; i < 11; i++) {
            //首字母不能为0
            result += (random.nextInt(9) + 1);
        }
        return result;
    }
}

(3)UserInfo实体类用于查询用户信息成功返回的对象(此步也主要是因为本人后面有用)。
UserInfo.java

package com.zhou.entity.user;

import java.util.Date;

public class UserInfo {
    private String uuid;

    private String userName;

    private String mobile;

    private String nickName;

    private String interest;

    private Integer gender;

    private String imgUrl;

    private String email;

    private Date registTime;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid == null ? null : uuid.trim();
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile == null ? null : mobile.trim();
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName == null ? null : nickName.trim();
    }

    public String getInterest() {
        return interest;
    }

    public void setInterest(String interest) {
        this.interest = interest == null ? null : interest.trim();
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl == null ? null : imgUrl.trim();
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    public Date getRegistTime() {
        return registTime;
    }

    public void setRegistTime(Date registTime) {
        this.registTime = registTime;
    }
}

3.新建业务层接口UserService

package com.zhou.service.user;

import com.zhou.entity.user.UserInfo;

public interface UserService {
    /**
     * 用户登录
     * @param userName 用户名
     * @param password 密码
     * @return UserInfo 用户信息
     */
    public UserInfo login(String userName,String password);

    /**
     * 用户注册
     * @param userName 用户名
     * @param password 密码
     */
    public  void  register(String userName,String password);
}

4.使用用户名和密码登录,就需要使用用户名+密码两个参数去查询用户信息,自动生成的mapper接口中没有能满足的接口,所以就需要自己写一个selectByNameAndPwd接口
在UserMapper.java中添加

   /**
     * 
     * 通过用户名与密码查询用户信息
     * @param record
     * @return
     */
    public UserInfo selectByNameAndPwd(User record);

在UserMapper.xml中添加

   <select id="selectByNameAndPwd" resultType="com.zhou.entity.user.UserInfo" parameterType="com.zhou.entity.user.User" >
    SELECT
    s.uuid AS uuid,
    s.user_name AS userName,
    s.mobile AS mobile,
    s.nick_name AS nickName,
    s.interest AS interest,
    s.gender AS gender,
    s.img_url AS imgUrl,
    s.email AS email,
    s.regist_time AS registTime
    FROM zs_user s
    WHERE 1=1
    <if test="userName != null and userName != ''">
      and s.user_name = #{userName,jdbcType=VARCHAR}
    </if>
    <if test="password != null and password != ''">
      and s.password = #{password,jdbcType=VARCHAR}
    </if>
  </select>

5.新增业务层UserService的实现类UserServiceImpl(登录注册的业务逻辑就在其中了,目前只做了简单的数据库操作,很多严格的业务逻辑根据自己需求添加)

package com.zhou.serviceImpl.user;

import com.zhou.common.utils.DataUtils;
import com.zhou.common.utils.UUIDUtils;
import com.zhou.dao.user.UserMapper;
import com.zhou.entity.user.User;
import com.zhou.entity.user.UserInfo;
import com.zhou.service.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;

    /**
     * 用户登录
     * @param userName 用户名
     * @param password 密码
     * @return UserInfo 用户信息
     */
    @Override
    public UserInfo login(String userName, String password){
        if (userName ==null || password == null){
            //TODO异常处理后续完成
            System.out.println("用户名或密码为空!");
        }
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        UserInfo userInfo = userMapper.selectByNameAndPwd(user);
        if (userInfo == null){
            //TODO异常处理后续完成
            System.out.println("用户名或密码错误");
        }
        return userInfo;
    }

    /**
     * 用户注册
     * @param userName 用户名
     * @param password 密码
     */
    @Override
    public  void  register(String userName,String password){
        if (userName ==null || password == null){
            //TODO异常处理后续完成
            System.out.println("用户名或密码为空!");
        }
        User user = new User();
        String pkUserId = UUIDUtils.getPkUUID();
        String uuId = UUIDUtils.getUserUUID();
        Date registerTime = DataUtils.getCurrentDate();
        user.setPkUserId(pkUserId);
        user.setUuid(uuId);
        user.setUserName(userName);
        user.setPassword(password);
        user.setRegistTime(registerTime);
        int count = 0;
        count = userMapper.insert(user);
        if (count == 0){
            //TODO异常处理后续完成
            System.out.println("新增用户失败");
        }
    }
}

6.新建控制层UserController.java(简单的处理了逻辑)

package com.zhou.controller.user;

import com.zhou.entity.user.UserInfo;
import com.zhou.service.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@RequestMapping(value = {"/zhou"})
@Controller
public class UserController {
    @Autowired
    UserService userService;

    /**
     * 跳转到登录测试页面
     * @return 登录页面
     */
    @RequestMapping(value = {"user/loginPage"})
    public String loginHtml(){
        return "user/login";
    }

    /**
     * 跳转到注册测试页面
     * @return 注册页面
     */
    @RequestMapping(value = {"user/registerPage"})
    public String registerPage(){
        return "user/register";
    }

    /**
     * 用户注册
     */
    @RequestMapping(value = {"user/register"})
    @ResponseBody
    public String register(String userName,String password){
        //TODO异常处理后续完成
        userService.register(userName,password);
        System.out.println("注册成功");
        return "注册成功";
    }

    /**
     * 用户登录
     */
    @RequestMapping(value = {"user/login"})
    public String login(String userName,String password){
        UserInfo userInfo = userService.login(userName,password);
        if(userInfo == null){
            //TODO异常处理后续完成
            return "登录失败";
        }else {
            System.out.println("登录用户信息:"+userInfo.toString());
        }
        return "登录成功";
    }
}

7.由于主要是介绍后端的操作,所以前端的代码就比较简略与丑了。
登录测试页面login.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录测试</title>
</head>
<div>
    <form action="/zhou/user/login" method="post">
            用户名:<input type="text" name="userName" /><br>&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" /><br>
            <input type="submit" value="登录" />
    </form>
</div>
</body>
</html>

注册测试页面login.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册测试</title>
</head>
<body>
<form action="/zhou/user/register" method="post">
    用户名:<input type="text" name="userName" /></br>
    密码:<input type="password" name="password" /></br>
    <input type="submit" value="注册">
</form>
</body>
</html>

六、Run项目Application
输入http://localhost:8080/zhou/user/registerPage
在这里插入图片描述注册成功
在这里插入图片描述结尾:
由于这是本人的第一片博客,有什么不到之处希望大家提出问题指正,当然在整个创建过程中不少读者可能会遇到很多问题,欢迎留言评论,我一一回复大家。

补充说明:文章内容风格老旧,如需要学习源码,可以去githubgitee等代码仓库中去搜索并下载学习
欢迎访问 本人github地址

  • 7
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
1. 创建Spring项目 在IntelliJ IDEA创建一个新的Spring项目,选择Maven项目,然后选择Spring Web和Spring JDBC作为依赖项。 2. 配置数据库连接 在pom.xml文件中添加MyBatisMySQL驱动程序的依赖项: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.27</version> </dependency> ``` 在src/main/resources目录下创建一个名为application.properties的文件,配置数据库连接信息: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 3. 创建数据库表 在MySQL创建一个名为user的表,用于存储用户信息: ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ``` 4. 创建数据访问对象 创建一个名为UserMapper的Java接口,用于定义数据访问对象的方法: ``` public interface UserMapper { User findByUsername(String username); } ``` 创建一个名为UserMapper.xml的MyBatis映射文件,用于将SQL语句映射到接口的方法: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <select id="findByUsername" parameterType="String" resultType="com.example.entity.User"> SELECT * FROM user WHERE username = #{username} </select> </mapper> ``` 5. 创建实体类 创建一个名为User的Java类,用于表示用户对象: ``` public class User { private int id; private String username; private String password; // 构造方法、getter和setter省略 } ``` 6. 创建服务类 创建一个名为UserService的Java类,用于处理用户登录操作: ``` @Service public class UserService { @Autowired private UserMapper userMapper; public boolean login(String username, String password) { User user = userMapper.findByUsername(username); if (user != null && user.getPassword().equals(password)) { return true; } return false; } } ``` 7. 创建控制器类 创建一个名为UserController的Java类,用于处理用户登录请求: ``` @Controller public class UserController { @Autowired private UserService userService; @PostMapping("/login") @ResponseBody public String login(String username, String password) { if (userService.login(username, password)) { return "登录"; } else { return "登录失败"; } } } ``` 8. 创建视图文件 在src/main/resources/templates目录下创建一个名为index.html的Thymeleaf视图文件,用于显示登录表单: ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>登录页面</title> </head> <body> <form method="post" action="/login"> <label>用户名:<input type="text" name="username" /></label><br /> <label>密码:<input type="password" name="password" /></label><br /> <input type="submit" value="登录" /> </form> </body> </html> ``` 9. 运行项目 运行Spring Boot应用程序,访问http://localhost:8080/即可看到登录表单。输入正确的用户名和密码后,将显示“登录”消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值