jsp 语言 JSP 与 MyBatis 实现动态 SQL 条件查询示例

JSP阿木 发布于 24 天前 6 次阅读


JSP 与 MyBatis 实现动态 SQL 条件查询示例

在Java Web开发中,JSP(JavaServer Pages)和MyBatis是两个常用的技术。JSP用于创建动态网页,而MyBatis则是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。本文将结合这两个技术,通过一个示例来展示如何使用MyBatis实现动态SQL条件查询。

环境准备

在开始之前,请确保以下环境已经搭建好:

1. Java开发环境(如JDK 1.8+)

2. Web服务器(如Apache Tomcat 9+)

3. MyBatis框架(可以从官网下载或使用Maven依赖)

4. 数据库(如MySQL)

示例需求

假设我们有一个用户表(User),包含以下字段:

- id:用户ID(主键)

- username:用户名

- password:密码

- email:邮箱

我们需要根据不同的条件查询用户信息,例如:

- 按用户名查询

- 按邮箱查询

- 按用户名和邮箱查询

1. 创建实体类

我们需要创建一个实体类来表示用户表:

java

public class User {


private Integer id;


private String username;


private String password;


private String email;

// 省略getter和setter方法


}


2. 创建MyBatis配置文件

接下来,我们需要创建MyBatis的配置文件(mybatis-config.xml),配置数据库连接信息、事务管理以及映射器:

xml

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE configuration


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"


"http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>


<environments default="development">


<environment id="development">


<transactionManager type="JDBC"/>


<dataSource type="POOLED">


<property name="driver" value="com.mysql.jdbc.Driver"/>


<property name="url" value="jdbc:mysql://localhost:3306/your_database"/>


<property name="username" value="your_username"/>


<property name="password" value="your_password"/>


</dataSource>


</environment>


</environments>


<mappers>


<mapper resource="com/example/mapper/UserMapper.xml"/>


</mappers>


</configuration>


3. 创建Mapper接口

然后,我们需要创建一个Mapper接口,定义查询方法:

java

public interface UserMapper {


List<User> selectByCondition(String username, String email);


}


4. 创建Mapper XML文件

接下来,我们需要创建一个Mapper XML文件(UserMapper.xml),定义动态SQL查询:

xml

<?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.mapper.UserMapper">


<select id="selectByCondition" resultType="User">


SELECT FROM user


<where>


<if test="username != null and username != ''">


AND username = {username}


</if>


<if test="email != null and email != ''">


AND email = {email}


</if>


</where>


</select>


</mapper>


5. 创建JSP页面

我们需要创建一个JSP页面(index.jsp),用于展示查询结果:

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>


<head>


<title>用户查询</title>


</head>


<body>


<form action="search" method="post">


用户名:<input type="text" name="username" /><br/>


邮箱:<input type="text" name="email" /><br/>


<input type="submit" value="查询" />


</form>


<c:if test="${not empty users}">


<table border="1">


<tr>


<th>用户名</th>


<th>密码</th>


<th>邮箱</th>


</tr>


<c:forEach var="user" items="${users}">


<tr>


<td>${user.username}</td>


<td>${user.password}</td>


<td>${user.email}</td>


</tr>


</c:forEach>


</table>


</c:if>


</body>


</html>


6. 创建Servlet处理请求

我们需要创建一个Servlet(SearchServlet.java)来处理表单提交的请求:

java

@WebServlet("/search")


public class SearchServlet extends HttpServlet {


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


String username = request.getParameter("username");


String email = request.getParameter("email");


UserMapper userMapper = MyBatisUtil.getSqlSession().getMapper(UserMapper.class);


List<User> users = userMapper.selectByCondition(username, email);


request.setAttribute("users", users);


request.getRequestDispatcher("index.jsp").forward(request, response);


}


}


总结

通过以上步骤,我们成功实现了使用JSP和MyBatis进行动态SQL条件查询的示例。在实际项目中,可以根据需求调整查询条件和映射文件,以达到更好的效果。希望本文能对您有所帮助。