SELECT * FROM user WHERE username LIKE #{aaa}与SELECT * FROM user WHERE username LIKE '%${value}%'

本文探讨了在Mybatis中进行模糊查询的两种方法:使用#{aaa}

在Mybatis中模糊查询like有两种写法:
第一种为SELECT * FROM user WHERE username LIKE #{aaa}
另一种SELECT * FROM user WHERE username LIKE ‘%${value}%’
LIKE #{aaa}执行的SQL为:
在这里插入图片描述
使用的是?占位符:对用的是preparedStatement的参数占位符【预处理】

LIKE '%${value}%'执行的SQL为:
在这里插入图片描述
使用的是Statement对象字符串拼接SQL
建议使用like #{aaa}的形式
预处理preparedStatement预处理可以防止SQL注入,并效率比较高

<%@ page import="java.sql.*" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String dbUrl = "jdbc:sqlserver://localhost:1433;databaseName=Lanqiu;" + "encrypt=true;trustServerCertificate=true"; String dbUser = "sa"; String dbPass = "hfy123456"; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(dbUrl, dbUser, dbPass); String sql = "SELECT u.username, COUNT(r.reservation_id) AS reservation_count, COUNT(er.rental_id) AS rental_count " + "FROM users u " + "LEFT JOIN reservations r ON u.user_id = r.user_id " + "LEFT JOIN equipment_rentals er ON u.user_id = er.user_id " + "GROUP BY u.username"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); %> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>用户活动统计</title> <style> body { font-family: Arial, sans-serif; background-color: #f7f9fc; margin: 0; padding: 0; } .container { width: 90%; max-width: 900px; margin: 40px auto; background: white; box-shadow: 0 4px 10px rgba(0,0,0,0.1); border-radius: 8px; padding: 20px; } h2 { text-align: center; color: #333; } table { width: 100%; border-collapse: collapse; margin-top: 20px; } th, td { border: 1px solid #ddd; padding: 12px; text-align: center; } th { background-color: #007bff; color: white; } tr:nth-child(even) { background-color: #f2f2f2; } tr:hover { background-color: #e0eefa; } .no-data { text-align: center; padding: 20px; color: #888; } .footer { text-align: center; margin-top: 30px; color: #aaa; } .back-btn { display: inline-block; margin-bottom: 20px; padding: 8px 16px; background-color: #007bff; color: white; text-decoration: none; border-radius: 4px; } .back-btn:hover { background-color: #0056b3; } </style> </head> <body> <div class="container"> <a href="order.jsp" class="back-btn">返回首页</a> <h2>用户活动统计</h2> <table> <tr> <th>用户名</th> <th>预约次数</th> <th>租借次数</th> </tr> <% boolean hasData = false; while (rs.next()) { hasData = true; %> <tr> <td><%= rs.getString("username") %></td> <td><%= rs.getInt("reservation_count") %></td> <td><%= rs.getInt("rental_count") %></td> </tr> <% } if (!hasData) { %> <tr> <td colspan="3" class="no-data">暂无用户活动记录。</td> </tr> <% } %> </table> <div class="footer">© 2025 场地管理系统</div> </div> </body> </html> <% } catch (Exception e) { %> <div style="text-align:center; padding: 40px;"> <h2 style="color:red;">加载失败</h2> <p><%= e.getMessage() %></p> <a href="order.jsp" class="back-btn">返回首页</a> </div> <% } finally { if (rs != null) rs.close(); if (ps != null) ps.close(); if (conn != null) conn.close(); } %> 请给此页面添加查询功能
06-27
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值