(MVC)SpringBoot+Mybatis+Mapper.xml

前言:本篇博客主要对MVC架构、Mybatis工程加深下理解,前面写过一篇博客:SprintBoot+html/css/js+mybatis的demo,里面涉及到了Mybatis的应用,此篇博客主要介绍一种将sql语句写到了配置文件里的方法,即Mybatis里Mapper.xml文件配置,其主要用于定义sql语句和映射关系

目录

MVC架构流程图

配置文件

mapper层

model层

service层

controller层

结果展示


MVC架构流程图

根据自己的理解画了一下访问接口时,涉及到service层、mapper层、mybatis工程的应用

上篇博客地址:

https://blog.csdn.net/MRJJ_9/article/details/131884585

配置文件

xml配置文件

java 复制代码
<?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">
<!-- namespace:填写映射当前的Mapper接口,所有的增删改查的参数和返回值类型,
		就可以直接填写缩写,不区分大小写,直接通过方法名去找类型-->
<mapper namespace="com.example.interfaceautotest.mapper.CaseMapper">
<!--    id 对应的是mapper.CaseMapper里的方法名-->
    <select id="getInfoByPhone" resultType="com.example.interfaceautotest.model.MysqlUserData">
        select * from user where phone =#{phone} and pw =#{pw}  </select>

</mapper>

在application.properties文件里完成对应的配置

java 复制代码
spring.datasource.url=jdbc:mysql://localhost:3306/auto_test_data?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
mybatis.mapper-locations=classpath:/mapper/*.xml

mapper层

mapper里的方法

java 复制代码
package com.example.interfaceautotest.mapper;

import com.example.interfaceautotest.model.MysqlUserData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface CaseMapper {
    
    MysqlUserData getInfoByPhone(@Param("phone") String phone,
                               @Param("pw") String pw);
}

model层

model层与数据库的关联

java 复制代码
package com.example.interfaceautotest.model;

//注册表
public class MysqlUserData{
    private String id;
    private String usr;
    private String pw;
    private String phone;
    private String email;

    public String getId(){
        return id;
    }
    public void setId(String id){
        this.id = id;
    }
    public String getUsr(){
        return usr;
    }
    public void setUsr(String usr){
        this.usr = usr;
    }

    public String getPw(){
        return pw;
    }
    public void setPw(String pw){
        this.pw = pw;
    }
    public String getPhone(){
        return phone;
    }
    public void setPhone(String phone){
        this.phone = phone;
    }
    public String getEmail(){
        return email;
    }
    public void setEmail(String email){
        this.email = email;
    }

    }

model层与service层关联的返回结果

java 复制代码
package com.example.interfaceautotest.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    public int code;
    public String msg;
    public Object data;

    public int getCode(){
        return code;
    }
    public void setCode(int code){
        this.code = code;
    }
    public String getMsg(){
        return msg;
    }
    public void setMsg(String msg){
        this.msg = msg;
    }

    public Object getData(){
        return data;
    }
    public void setData(Object data){
        this.data = data;
    }
}

service层

java 复制代码
package com.example.interfaceautotest.service.impl;

import com.example.interfaceautotest.mapper.CaseMapper;
import com.example.interfaceautotest.model.MysqlUserData;
import com.example.interfaceautotest.model.Result;
import com.example.interfaceautotest.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service("UserSevice")
public class UserServiceImpl implements UserService {
    @Resource
    CaseMapper CaseMapper;
    public Result login(String username, String password) {
        if (username == null || password == null)
            return new Result(-1,"用户名或密码不能为空","用户名或密码不能为空");
            MysqlUserData user = CaseMapper.getInfoByPhone(username, password);
            if (user==null){
                return new Result(-3,"用户名或密码错误","用户名或密码错误");
            }
            else {
                return new Result(1,"登录成功",user);
            }
    }
}

controller层

java 复制代码
package com.example.interfaceautotest.controller;
import com.example.interfaceautotest.model.Result;
import com.example.interfaceautotest.service.UserService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("/test")
public class Login {
        @Resource
        UserService UserService;
        @GetMapping("/login")

        public Result login(String username, String password){
            return UserService.login(username,password);
        }

}

结果展示

传入的参数phone和pw在数据库里可以查询到

传入的参数phone和pw在数据库里不可以查询到

相关推荐
程序员晓琪10 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly10 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
用户3521802454751 天前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
用户3521802454754 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
昵称为空C4 天前
手撸一个动态 SQL 执行引擎:不重启服务,在线增删改查任意数据库
spring boot·后端
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
于先生吖5 天前
SpringBoot对接大模型开发AI命理测算系统:八字排盘与AI解析接口源码全解
人工智能·spring boot·后端
Flittly5 天前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring