springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)

简介: 本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。

自定义一个mvc

package com.example.springboot01.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Locale;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    public  static class MyViewResolver implements ViewResolver {
//         自定义一个 自己的视图解析器
        @Bean
        public ViewResolver myViewResolver(){
return new MyViewResolver();
        }
        @Override
        public View resolveViewName(String viewName, Locale locale) throws Exception {
            return null;
        }
    }
}

后端给前端传数据

后端

@RestController
public class IndexController {
@RequestMapping("/index")
    public String Hello(){
    return "hello";
}
}

前端

代理

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false, /*关闭语法检查*/
  devServer: {
    proxy: {
      // 代理 见到 api开头 拦截,然后替换 为 target里面的内容,所以需要将
      // ^/api 变为 空字符串
      '/api': { //表示  拦截  /api  开头的路径
        // 跨域 的域名(不需要写路径) 写 了的话需要替换 
        // 如果更改了地址就需要在后面加上
        target: "http://localhost:8080/",
        changeOrigin: true,     //  是否 开启跨域 
        pathRewrite: {
          '^/api': '',        //  把/api  变为 空字符串     
        }
      },
    }
  },
})

使用

methods: {
    test() {
      const a = axios.get("/api/index").then(res => res.data)
      console.log(a)
    }
  }

增删改查

先创建一个数据库

在 配置好 环境 变量下 完成 增删改查

查所有

查所有

先 写一个controller

@RequestMapping
    public List<User> index(){
        return userMapper.findAll();
    }

然后创建一个userMapper  接口

@Mapper
public interface UserMapper {
    @Select("select * from sys_user")
    List<User> findAll();
}

引用 mapper    注意注解

@Autowired
    private   UserMapper userMapper;


通过id删除

语句

调用mapper  一样

@Autowired
    private   UserMapper userMapper;
    //  删除
    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable Integer id){
        return userMapper.deleteById(id);
    }

创建mapper 文件

@Delete("delete from sys_user where id = #{id}")
    Integer deleteById(@Param("id") Integer id);

即可

增加

//  增和 改 都在 这个里面
    @PostMapping
    public Integer save(@RequestBody User user){
//         新增或则 更新 都在里面
        return userService.save(user);
    }

此时 使用的 是 userService  文件

@Autowired
    private UserService userService;

使用一个 判断   整合  

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public int save(User user){
        if(user.getId() == null){
           return userMapper.insert(user);
        }else {
//             否则为更新
         return userMapper.update(user);
        }
    }
}

主要的 增删 改查 还在   mapper 文件中

inser  为 增加

@Insert("INSERT into sys_user (username,password,nickname,email,phone,address) values(#{username},#{password},#{nickname},#{email},#{phone},#{address})")
int insert(User user);


更新

先定义一个语句

int update(User user);

在 resources 文件夹下面  创建一个mapper

并在application.yaml  里面配置好

mybatis:
  mapper-locations: classpath:mapper/*.xml
#   classpath  resources 文件夹 下面的 东西
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#     打印日志

再创建User.xml    

 为 el语法

updata id= update      为mapper 中 配置的 名字

<?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.springboot.mapper.UserMapper">
<!--    id  和 方法名一样-->
    <update id="update">
    update sys_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="email != null">
            email=#{email},
        </if>
        <if test="phone != null">
            phone=#{phone},
        </if>
        <if test="address != null">
            address=#{address}
        </if>
    </set>
<where>
   id=#{id}
</where>
    </update>
</mapper>


分页and 查询


(pageNum-1)*pageSize

pageNum    显示第几页

pageSize    每页显示的 个数

//    limit 2,5
    // 2 下标0 开始  后面加一 开始,   5   表示 每页显示的 数量 
@Select("select * from sys_user Limit #{pageNum},#{page Size}")
    List <User>selectPage(Integer pageNum, Integer pageSize);
@Select("select count(*) from sys_user ")
    Integer selectTotal();
}
// count  表示 数量
//   分页查询接口
    //@RequestParam  接收 ?pageNum = 1 pageSize=10
    @RequestMapping("/page")
    public Map<String,Object> findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize) {
        pageNum=(pageNum-1)*pageSize;// 每页数量  开始的  下标
/ 你/         分页 的 方法  得到 data
        List<User>data=userMapper.selectPage(pageNum,pageSize);
//         全部的 数据
          Integer total=userMapper.selectTotal();
//           定义一个map  存入  数据
        Map<String,Object>res=new HashMap<>();
        res.put("data",data);
        res.put("total",total);
       return res;
    }
}

在 分页基础 上加一个username   参数  完成 查询

//   分页查询接口
    //@RequestParam  接收 ?pageNum = 1 pageSize=10
    @RequestMapping("/page")
    public Map<String,Object> findPage(@RequestParam Integer pageNum,
                                       @RequestParam Integer pageSize,
                                       @RequestParam String username) {
        pageNum=(pageNum-1)*pageSize;// 每页数量  开始的  下标
        username = "%"+username+"%";
//         分页 的 方法  得到 data
        List<User>data=userMapper.selectPage(pageNum,pageSize,username);
//         全部的 数据
          Integer total=userMapper.selectTotal(username);
//           定义一个map  存入  数据
        Map<String,Object>res=new HashMap<>();
        res.put("data",data);
        res.put("total",total);
       return res;
    }
}
//    limit 2,5
    // 2 下标0 开始  后面加一 开始,   5   表示 每页显示的 数量
@Select("select * from sys_user where username like #{username} Limit #{pageNum},#{pageSize}")
    List <User>selectPage(Integer pageNum, Integer pageSize,String username);
@Select("select count(*) from sys_user where username like #{username}")
    Integer selectTotal(String username);
}

前端 绑定

现在 el-input 里面绑定 username

在load 方法里面 加参数

点击按钮加载 方法

load() {
            //  请求分页
            fetch(`http://localhost:8081/user/page?pageNum=${this.pageNum}&pageSize=${this.pageSize}&username=${this.username}`).then(res => res.json()).then(
                res => {
                    this.tableData = res.data,
                        this.total = res.total
                }
            )
        },




相关文章
|
11月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1074 1
|
6月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
7月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
319 5
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
668 70
|
11月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
607 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
9月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
378 0
|
前端开发 算法 NoSQL
前端uin后端php社交软件源码,快速构建属于你的交友平台
这是一款功能全面的社交软件解决方案,覆盖多种场景需求。支持即时通讯(一对一聊天、群聊、文件传输、语音/视频通话)、内容动态(发布、点赞、评论)以及红包模块(接入支付宝、微信等第三方支付)。系统采用前后端分离架构,前端基于 UniApp,后端使用 PHP 框架(如 Laravel/Symfony),配合 MySQL/Redis 和自建 Socket 服务实现高效实时通信。提供用户认证(JWT 集成)、智能匹配算法等功能,助力快速上线,显著节约开发成本。
466 2
前端uin后端php社交软件源码,快速构建属于你的交友平台
|
10月前
|
人工智能 监控 前端开发
AI工具:前端与后端的终极对决?谁将成为新时代的宠儿?
深入探讨AI工具对前端和后端开发的具体影响、各自的机遇与挑战,并分析未来开发者如何驾驭AI,实现能力跃迁。
628 0
|
前端开发 JavaScript Java
Springboot 前端请求的每次sessionid 都不同
Springboot 前端请求的每次sessionid 都不同
1268 0
|
6月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
下一篇
开通oss服务