• SpringBoot + MyBatis 结合 MVC框架设计 第2关:使用SpringBoot + MyBatis实现一个最简单的注册功能


    目录

    任务描述

    相关知识

    项目创建

    MVC框架

    使用MVC分层实现注册

    编程要求

    测试说明

    参考代码


    任务描述

    本关任务:使用SpringBoot + MyBatis实现一个最简单的注册功能的小程序。

    相关知识

    为了完成本关任务,你需要掌握:1.如何搭建SpringBoot项目 2.如何分层实现注册。

    项目创建

    1. maven构建项目:

      • 访问 http://start.spring.io/

      • 进入网址填好自己需要的包名和工具,比如webMySQL之类的;

      • 点击Generate Project下载项目压缩包;

      • 解压后,用Eclipse打开就行。

    2. Spring Boot的基础结构共三个文件:

      • src/main/java:程序开发以及主程序入口;

      • src/main/resources:配置文件;

      • src/test/java: 测试程序。

    3. Spring Boot的目录结构如下:

    1. net
    2. +- educoder
    3. +- Application.java
    4. |
    5. +- entity
    6. | +- TUser.java
    7. | +- Result.java
    8. |
    9. +- service
    10. | +- UserService.java
    11. |
    12. +- mapper
    13. | +- DemoMapper.java
    14. +- controller
    15. | +- DemoController.java
    16. |
    • Application.java 建议放到根目录下面,主要用于启动项目;
    • entity 目录主要用于实体(Entity);
    • mapper 层为数据访问层;
    • service 层主要是业务类代码;
    • controller 层负责页面访问控制。

    MVC框架

    在开始编写代码之前我们需要了解软件开发中一种常见的框架——MVC

    MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:

    • Model(模型)表示应用程序核心(比如数据库记录列表)。
    • View(视图)显示数据(数据库记录)。
    • Controller(控制器)处理输入(写入数据库记录)。

    这种模式有什么好处呢?

    他的优势在于:

    耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程化管理。

    如何实现MVC框架呢?

    其实我们已经做过一部分了,在之前的内容中,我们使用了ControllerController就是属于控制器,即C,使用的实体类其实就是模型层。

    使用MVC分层实现注册

    在之前我们都是在Controller中直接对数据库进行的操作,学习了MVC我们应该知道业务逻辑的处理应该单独成为一个模块,所以我们现在要将业务逻辑层的代码提取出来成为一个单独的模块。

    按照第一关的流程,添加依赖及配置application.properties文件:

    1. org.mybatis.spring.boot
    2. mybatis-spring-boot-starter
    3. 2.1.0
    1. spring.datasource.driverClassName = com.mysql.jdbc.Driver
    2. #mysql地址
    3. spring.datasource.url = jdbc:mysql://localhost:3306/information_schema?useUnicode=true&cha\fracterEncoding=utf-8
    4. #mysql用户名
    5. spring.datasource.username = root
    6. #mysql密码
    7. spring.datasource.password = 123123

    接下来 mapper 层,增加注册的数据访问接口:

    1. @Mapper
    2. public interface UserMapper {
    3. @Insert("insert into users (userName,passWord) values (#{username},#{password})")
    4. @Options(useGeneratedKeys = true, keyProperty = "userId")
    5. public int insert(@Param("username")String userName, @Param("password")String password);
    6. }

    service层增加注册业务代码:

    1. @Service
    2. public class UserService {
    3. @Autowired
    4. UserMapper userMapper;
    5. public Result addUser(String userName, String passWord) {
    6. Result result = new Result();
    7. //验证参数
    8. if (org.springframework.util.StringUtils.isEmpty(userName)
    9. || org.springframework.util.StringUtils.isEmpty(passWord)) {
    10. result.setCode(-1);
    11. result.setMessage("用户名或者密码为空");
    12. }//验证成功进行调用数据访问层进行注册
    13. else {
    14. int insert = userMapper.insert(userName, passWord);
    15. result.setCode(0);
    16. result.setMessage("成功");
    17. result.setData(insert);
    18. }
    19. return result;
    20. }

    Result类为返回值,类结构如下:

    1. @Data
    2. public class Result {
    3. //0为成功,非0为异常
    4. int code;
    5. //成功或失败消息
    6. String message;
    7. //返回数据
    8. Object data;
    9. }

    最后在controller层创建注册接口并调用这个service即可:

    1. @Controller
    2. public class UserController {
    3. @Autowired
    4. UserService userService;
    5. @RequestMapping("/register")
    6. @ResponseBody
    7. public Result register(@RequestParam(name = "userName") String userName,
    8. @RequestParam(name = "passWord") String passWord) {
    9. Result addUser = userService.addUser(userName, passWord);
    10. return addUser;
    11. }
    12. }

    附上测试效果图:

    • 当注册参数缺失,会提示用户名或者密码为空;

    •  补全注册参数,则显示注册成功;

    编程要求

    请仔细阅读右侧代码,结合相关知识,实现一个最简单的注册功能,请在 Begin-End 区域内进行代码补充以下代码:

    1. 在 UserMapper 里增加注册用户信息的数据库访问接口
    2. UserService 中验证参数,调用UserMapper接口进行注册
    3. UserController创建前端访问接口,调用UserService的接口进行注册。

    请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用SpringBoot + MyBatis实现一个最简单的注册功能,平台会对注册接口进行验证。

    测试说明

    平台会对你的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


    参考代码

    UserController.java

    1. package net.educoder.controller;
    2. import org.springframework.beans.factory.annotation.Autowired;
    3. import org.springframework.stereotype.Controller;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RequestParam;
    6. import org.springframework.web.bind.annotation.ResponseBody;
    7. import net.educoder.entity.Result;
    8. import net.educoder.service.impl.UserService;
    9. @Controller
    10. public class UserController {
    11. /********* Begin *********/
    12. @Autowired
    13. UserService userService;
    14. @RequestMapping("/register")
    15. @ResponseBody
    16. public Result register(@RequestParam(name = "userName") String userName,
    17. @RequestParam(name = "passWord") String passWord) {
    18. Result addUser = userService.addUser(userName, passWord);
    19. return addUser;
    20. }
    21. /********* End *********/
    22. }

    UserMapper.java

    1. package net.educoder.mapper;
    2. import org.apache.ibatis.annotations.Insert;
    3. import org.apache.ibatis.annotations.Mapper;
    4. import org.apache.ibatis.annotations.Options;
    5. import net.educoder.entity.TUser;
    6. @Mapper
    7. public interface UserMapper {
    8. /********* Begin *********/
    9. @Insert("insert into t_user (userName,passWord) values (#{userName},#{passWord})")
    10. @Options(useGeneratedKeys = true, keyProperty = "userId")
    11. public int insert(TUser user);
    12. /********* End *********/
    13. }

    UserService.java

    1. package net.educoder.service.impl;
    2. import org.springframework.beans.factory.annotation.Autowired;
    3. import org.springframework.stereotype.Service;
    4. import net.educoder.entity.Result;
    5. import net.educoder.entity.TUser;
    6. import net.educoder.mapper.UserMapper;
    7. @Service
    8. public class UserService {
    9. /********* Begin *********/
    10. @Autowired
    11. UserMapper userMapper;
    12. public Result addUser(String userName, String passWord) {
    13. Result result = new Result();
    14. TUser user = new TUser();
    15. //验证参数
    16. if (org.springframework.util.StringUtils.isEmpty(userName)
    17. || org.springframework.util.StringUtils.isEmpty(passWord)) {
    18. result.setCode(-1);
    19. result.setMessage("用户名或者密码为空");
    20. }//验证成功进行调用数据访问层进行注册
    21. else {
    22. user.setUserName(userName);
    23. user.setPassWord(passWord);
    24. userMapper.insert(user);
    25. result.setCode(0);
    26. result.setMessage("成功");
    27. result.setData(user);
    28. }
    29. return result;
    30. }
    31. /********* End *********/
    32. }

  • 相关阅读:
    MySQL 数据库主从复制
    《微信小程序开发从入门到实战》学习十九
    Java中如何删除HashSet对象中的元素呢?
    《Python趣味工具》——ppt的操作(刷题版)
    org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
    数学基础从高一开始1、集合的概念
    checksum校验和
    典型数据结构-栈/队列/链表、哈希查找、二叉树(BT)、线索二叉树、二叉排序树(BST树)、平衡二叉树(AVL树)、红黑树(RB树)
    P34 JTable表格
    glog 日志库简介与测试【GO 常用的库】
  • 原文地址:https://blog.csdn.net/ycq0_9/article/details/127832961