当前位置: 首页 > article >正文

JAVA Spring MVC+Mybatis Spring MVC的工作流程*,多表连查

目录

注解总结

将传送到客户端的数据转成json数据

**描述一下Spring MVC的工作流程**


1。属性赋值

BeanUtils.copyProperties(addUserDTO,user);

添加依赖:
    spring web、mybatis framework、mysql driver

@Controller和@ResponseBody优化


直接改成@RestController,每个方法上,就不需要加@ResponseBody

@RestController是组合注解,就等于:@Controller + @ResponseBody

@RequestMapping作用在类上,(value = "/v1/users/"),表示公共路径

添加该注解后,所有的接口上,不用再添加@Mapper注解了

防止自动装配@Autowired UserMapper userMapper;报错,可以添加value=false,表示不管是否装配成功,都不会不错

注解总结

        @Controller 注解
        标注一个类;
        表示该类是一个控制器,负责处理用户的请求,并将处理结果生成响应返回给客户端。


        @RequestMapping 注解
        请求注解;
        添加在控制器类或控制器方法上;
        将HTTP请求映射到控制器中的方法,指定处理请求的路径
        控制器类上:为整个控制器指定一个基础路径
        控制器方法上:指定相对于基础路径的具体路径


        @ResponseBody 注解
        响应注解;
        添加在控制器方法上;
        可以使控制器方法通过返回值的方式将响应返回给客户端。

        @RestController 注解
        作用于类上;
        作用是将类中的方法返回值直接作为HTTP响应的内容;
        在控制器类中加入该注解后,无需在每个方法上添加 @ResponseBody 注解;
        可以让Spring框架自动将方法的返回值序列化并填充到HTTP响应中,实现Web服务端点的快速       

        开发。
        

        @MapperScan 注解说明
        添加在 Spring配置类 上;
        用于告诉 Spring 扫描 MyBatis Mapper 接口并创建对应的 Mapper 实现;
        可以指定扫描 MyBatis 映射器接口的包名。

将传送到客户端的数据转成json数据,使用@ResponseBody或@RestController

**描述一下Spring MVC的工作流程**

        1. 客户端发送请求至前端控制器DispatcherServlet
        2. DispatcherServlet收到请求后,调用处理器映射器HandlerMapping
        3. HandlerMapping根据请求URL找到具体的Controller。
        4. Controller处理请求,并返回ModelAndView,其中的View只是视图名,并不指向具体的视图

        组件
        5. DispatcherServlet通过ViewReslover(视图解析器)确定负责显示数据的具体View
        6. DispatcherServlet对View进行渲染视图(即将Model填充至视图组件中),并将完整的视图

        响应到客户端

指定post请求方法:

    @RequestMapping(value = "insert",method = RequestMethod.POST)
//    @ResponseBodypublic String addUser(AddUserDTO addUserDTO){User user=new User();BeanUtils.copyProperties(addUserDTO,user);user.setCreated(new Date());userMapper.insertUser(user);return "添加成功";}

        或者:@PostMapping(value = "insert"),是一样的效果,只接受post请求

@PathVariable表示路径参数

uid 
@GetMapping("/v1/users/{uid}")
public void xxx(@PathVarable Integer uid){}

1、MyBatisConfig

//@Configuration :设置自动扫描 标识此类为配置类,工程启动时,会自动加载此类 //@MapperScan: 1、自动扫描注解,一旦添加该注解,会为指定包路径及子孙中所有接口添加@Mapper注解 // 2、添加该注解后,所有的接口上,不用再添加@Mapper注解了

package cn.tedu._05mvcboot02.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;//@Configuration :设置自动扫描 标识此类为配置类,工程启动时,会自动加载此类
//@MapperScan: 1、自动扫描注解,一旦添加该注解,会为指定包路径及子孙中所有接口添加@Mapper注解
//             2、添加该注解后,所有的接口上,不用再添加@Mapper注解了
@Configuration
@MapperScan(value = "cn.tedu._05mvcboot02")
public class MyBatisConfig {
}

UserController

package cn.tedu._05mvcboot02.controller;import cn.tedu._05mvcboot02.mapper.UserMapper;
import cn.tedu._05mvcboot02.pojo.dto.AddUserDTO;
import cn.tedu._05mvcboot02.pojo.entity.User;
import cn.tedu._05mvcboot02.pojo.vo.UserListVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;
import java.util.List;//@Controller
@RestController
@RequestMapping(value = "/v1/users/")
public class UserController {@Autowired UserMapper userMapper;@RequestMapping(value = "insert")
//    @ResponseBodypublic String addUser(AddUserDTO addUserDTO){User user=new User();BeanUtils.copyProperties(addUserDTO,user);user.setCreated(new Date());userMapper.insertUser(user);return "添加成功";}@RequestMapping(value = "userList")
//    @ResponseBodypublic List<UserListVO> getUserList(){return userMapper.getUserList();}@RequestMapping(value = "deleteUser")
//    @ResponseBodypublic String deleteUserById(Integer id){return "删除成功"+userMapper.deleteUserById(id);}@RequestMapping(value = "update")
//    @ResponseBodypublic String updateUser(User user){return "更新成功:"+userMapper.updateUser(user);}}

UserMapper

package cn.tedu._05mvcboot02.mapper;import cn.tedu._05mvcboot02.pojo.entity.User;
import cn.tedu._05mvcboot02.pojo.vo.UserListVO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Controller;import java.util.List;@Mapper
public interface UserMapper {int insertUser(User user);List<UserListVO> getUserList();int deleteUserById(Integer id);int updateUser(User user);}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.tedu._05mvcboot02.mapper.UserMapper"><insert id="insertUser">INSERT INTO mvcdb.user(username, password, nickname, created)VALUES (#{username}, #{password}, #{nickname}, #{created})</insert><select id="getUserList" resultType="cn.tedu._05mvcboot02.pojo.vo.UserListVO">SELECT username, passwordFROM mvcdb.user</select><delete id="deleteUserById">DELETEFROM mvcdb.userWHERE id = #{id}</delete><update id="updateUser" >UPDATE mvcdb.user<set><if test="username!=null">username=#{username}</if>,<if test="password!=null">password=#{password}</if>,<if test="nickname!=null">nickname=#{nickname}</if>,<if test="created!=null">created=#{created}</if></set>WHERE id=#{id}</update></mapper><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.tedu._05weibo.mapper.WeiboMapper"><insert id="insert">INSERT INTO blog.weibo(content, created, user_id)VALUES (#{content}, #{created}, #{userId})</insert>获取微博<select id="selectIndex" resultType="cn.tedu._05weibo.pojo.vo.WeiboIndexVO">SELECT w.id,w.content,u.nicknameFROM blog.user uJOIN blog.weibo w on u.id = w.user_id</select>根据id获取详情<select id="selectById" resultType="cn.tedu._05weibo.pojo.vo.WeiboIndexVO">SELECT w.id,w.content,w.created,u.nicknameFROM blog.user uJOIN blog.weibo w on u.id = w.user_idWHERE w.id=#{id}
</mapper>

application.properties

server.port=8080#???????
spring.datasource.url=jdbc:mysql://localhost:3306/mvcdb?characterEncodeing=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123zhang
#xml????
mybatis.mapper-locations=classpath:mappers/*.xml

http://www.lryc.cn/news/2379154.html

相关文章:

  • ctr查看镜像
  • VueUse/Core:提升Vue开发效率的实用工具库
  • 数字格式化库 accounting.js的使用说明
  • ​Docker 网络
  • 【论文阅读】A Survey on Multimodal Large Language Models
  • 基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
  • vue3 elementplus tabs切换实现
  • 关于机器学习的实际案例
  • Linux的进程概念
  • C++ map容器: 插入操作
  • 基于STC89C52的红外遥控的电子密码锁设计与实现
  • Docker配置容器开机自启或服务重启后自启
  • 计算机单个进程内存布局的基本结构
  • 我的电赛(简易的波形发生器大一暑假回顾)
  • AI工程 新技术追踪 探讨
  • 算法题(149):矩阵消除游戏
  • 在 Vue 中插入 B 站视频
  • printf函数参数与入栈顺序
  • 仿生眼机器人(人脸跟踪版)系列之一
  • 08、底层注解-@Configuration详解
  • Go语言语法---输入控制
  • 蓝桥杯单片机按键进阶
  • CSS- 4.3 绝对定位(position: absolute)学校官网导航栏实例
  • Flink 作业提交流程
  • 拓展运算符
  • Seata源码—6.Seata AT模式的数据源代理一
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统
  • Spring Boot 与 RabbitMQ 的深度集成实践(一)
  • 黑马程序员2024新版C++笔记 第2章 语句
  • HTML5中的Microdata与历史记录管理详解