mybatis如何执行前端发来的查询请求

时间: 2024-01-02 16:01:50 浏览: 22
前端发来的查询请求一般是通过HTTP协议进行传输的,MyBatis可以通过集成一些Web框架(如Spring MVC、Spring Boot等)来处理HTTP请求,同时也可以直接使用Servlet进行处理。 下面以Spring MVC为例,介绍如何处理前端发来的查询请求: 1. 定义MyBatis的Mapper接口 首先需要定义一个MyBatis的Mapper接口,用于定义查询操作。例如: ```java public interface UserMapper { List<User> getUserList(); } ``` 2. 定义Spring MVC的Controller 在Spring MVC中,可以通过定义Controller来处理HTTP请求。在Controller中,需要注入MyBatis的Mapper接口,并调用其方法执行查询操作。例如: ```java @Controller public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public String getUserList(Model model) { List<User> userList = userMapper.getUserList(); model.addAttribute("users", userList); return "userList"; } } ``` 这里定义了一个getUserList()方法,用于处理GET请求。在方法中,注入了UserMapper,调用getUserList()方法执行查询操作,并将查询结果存入Model中,最终返回一个视图名(userList)。 3. 定义Spring MVC的视图 在Spring MVC中,可以通过定义视图来渲染HTML页面。这里简单的定义了一个userList.jsp页面,用于展示查询结果。例如: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>User List</title> </head> <body> <table> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> <c:forEach items="${users}" var="user"> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.age}</td> </tr> </c:forEach> </table> </body> </html> ``` 这里使用了JSP标签库<c:forEach>循环展示查询结果。 4. 配置Spring MVC 最后需要在Spring MVC中配置Mapper和视图解析器。例如: ```xml <!-- 配置MyBatis的SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置Mapper扫描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ``` 这里配置了MyBatis的SqlSessionFactory和MapperScannerConfigurer,以及Spring MVC的视图解析器。 这样就可以通过前端发送HTTP请求,然后由Spring MVC的Controller处理请求,调用MyBatis的Mapper接口执行查询操作,并将查询结果渲染到视图中,最终返回HTML页面。

相关推荐

package org.example.web; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.example.mapper.customerMapper; import org.example.pojo.customerPojo; import org.example.service.customerService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; @WebServlet("/loginServlet") public class loginServlet extends HttpServlet { private customerService service = new customerService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.接受用户名的密码 String c_username = request.getParameter("c_username"); String c_password = request.getParameter("c_password"); customerPojo customer = service.login(c_username, c_password); //避免出现乱码,设置字符输入流的编码,设置的字符集要和页面保持一致 response.setContentType("text/html;charset=utf-8"); PrintWriter writer = response.getWriter(); //7.判断user释放为null if (customer != null){ HttpSession session = request.getSession(); session.setAttribute("customer",customer); session.setAttribute("c_username",c_username); String contextPath = request.getContextPath(); response.sendRedirect("/花店.html"); }else { //登陆失败 writer.write("<script>window.alert('用户名或者密码错误')</script>"); writer.write("<script>window.location.href='login.jsp'</script>"); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //在dopost()里面调用doget()方法 //不管发过来是什么请求,最后都转向do() this.doGet(request, response); } }

最新推荐

recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。