目录
本关任务:使用SpringBoot + MyBatis实现一个最简单的注册功能的小程序。
为了完成本关任务,你需要掌握:1.如何搭建SpringBoot项目 2.如何分层实现注册。
maven构建项目:
进入网址填好自己需要的包名和工具,比如web,MySQL之类的;
点击Generate Project下载项目压缩包;
解压后,用Eclipse打开就行。
Spring Boot的基础结构共三个文件:
src/main/java:程序开发以及主程序入口;
src/main/resources:配置文件;
src/test/java: 测试程序。
Spring Boot的目录结构如下:
net+- educoder+- Application.java|+- entity| +- TUser.java| +- Result.java|+- service| +- UserService.java|+- mapper| +- DemoMapper.java+- controller| +- DemoController.java|
Application.java 建议放到根目录下面,主要用于启动项目;entity 目录主要用于实体(Entity);mapper 层为数据访问层;service 层主要是业务类代码;controller 层负责页面访问控制。在开始编写代码之前我们需要了解软件开发中一种常见的框架——MVC
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
这种模式有什么好处呢?
他的优势在于:
耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程化管理。

如何实现MVC框架呢?
其实我们已经做过一部分了,在之前的内容中,我们使用了Controller,Controller就是属于控制器,即C,使用的实体类其实就是模型层。
在之前我们都是在Controller中直接对数据库进行的操作,学习了MVC我们应该知道业务逻辑的处理应该单独成为一个模块,所以我们现在要将业务逻辑层的代码提取出来成为一个单独的模块。
按照第一关的流程,添加依赖及配置application.properties文件:
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0
spring.datasource.driverClassName = com.mysql.jdbc.Driver#mysql地址spring.datasource.url = jdbc:mysql://localhost:3306/information_schema?useUnicode=true&cha\fracterEncoding=utf-8#mysql用户名spring.datasource.username = root#mysql密码spring.datasource.password = 123123
接下来 mapper 层,增加注册的数据访问接口:
@Mapperpublic interface UserMapper {@Insert("insert into users (userName,passWord) values (#{username},#{password})")@Options(useGeneratedKeys = true, keyProperty = "userId")public int insert(@Param("username")String userName, @Param("password")String password);}
在service层增加注册业务代码:
@Servicepublic class UserService {@AutowiredUserMapper userMapper;public Result addUser(String userName, String passWord) {Result result = new Result();//验证参数if (org.springframework.util.StringUtils.isEmpty(userName)|| org.springframework.util.StringUtils.isEmpty(passWord)) {result.setCode(-1);result.setMessage("用户名或者密码为空");}//验证成功进行调用数据访问层进行注册else {int insert = userMapper.insert(userName, passWord);result.setCode(0);result.setMessage("成功");result.setData(insert);}return result;}
Result类为返回值,类结构如下:
@Datapublic class Result {//0为成功,非0为异常int code;//成功或失败消息String message;//返回数据Object data;}
最后在controller层创建注册接口并调用这个service即可:
@Controllerpublic class UserController {@AutowiredUserService userService;@RequestMapping("/register")@ResponseBodypublic Result register(@RequestParam(name = "userName") String userName,@RequestParam(name = "passWord") String passWord) {Result addUser = userService.addUser(userName, passWord);return addUser;}}
附上测试效果图:


请仔细阅读右侧代码,结合相关知识,实现一个最简单的注册功能,请在 Begin-End 区域内进行代码补充以下代码:
UserMapper 里增加注册用户信息的数据库访问接口UserService 中验证参数,调用UserMapper接口进行注册UserController创建前端访问接口,调用UserService的接口进行注册。请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用SpringBoot + MyBatis实现一个最简单的注册功能,平台会对注册接口进行验证。
平台会对你的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
UserController.java
- package net.educoder.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import net.educoder.entity.Result;
- import net.educoder.service.impl.UserService;
- @Controller
- public class UserController {
- /********* Begin *********/
- @Autowired
- UserService userService;
- @RequestMapping("/register")
- @ResponseBody
- public Result register(@RequestParam(name = "userName") String userName,
- @RequestParam(name = "passWord") String passWord) {
- Result addUser = userService.addUser(userName, passWord);
- return addUser;
- }
- /********* End *********/
- }
UserMapper.java
- package net.educoder.mapper;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Options;
- import net.educoder.entity.TUser;
- @Mapper
- public interface UserMapper {
- /********* Begin *********/
- @Insert("insert into t_user (userName,passWord) values (#{userName},#{passWord})")
- @Options(useGeneratedKeys = true, keyProperty = "userId")
- public int insert(TUser user);
- /********* End *********/
- }
UserService.java
- package net.educoder.service.impl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import net.educoder.entity.Result;
- import net.educoder.entity.TUser;
- import net.educoder.mapper.UserMapper;
- @Service
- public class UserService {
- /********* Begin *********/
- @Autowired
- UserMapper userMapper;
- public Result addUser(String userName, String passWord) {
- Result result = new Result();
- TUser user = new TUser();
- //验证参数
- if (org.springframework.util.StringUtils.isEmpty(userName)
- || org.springframework.util.StringUtils.isEmpty(passWord)) {
- result.setCode(-1);
- result.setMessage("用户名或者密码为空");
- }//验证成功进行调用数据访问层进行注册
- else {
- user.setUserName(userName);
- user.setPassWord(passWord);
- userMapper.insert(user);
- result.setCode(0);
- result.setMessage("成功");
- result.setData(user);
- }
- return result;
- }
- /********* End *********/
- }
