2026/4/6 5:38:03
网站建设
项目流程
织梦做仿站时 为何会发生本地地址跳转网站地址,欧美一级a做爰片免费网站,建e网3d模型库,用drupal做的网站#x1f3ac; HoRain 云小助手#xff1a;个人主页
⛺️生活的理想#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站#xff0c;性价比超高#xff0c;大内存超划算#xff01;忍不住分享一下给大家。点击跳转到网站。 目录
⛳️ 推荐 … HoRain 云小助手个人主页⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。目录⛳️ 推荐1. 使用 Param 注解推荐用于参数较少场景2. 使用 Map 传参适合动态查询3. 使用 Java Bean 对象推荐用于复杂查询4. MyBatis-Plus QueryWrapper现代化选择动态 SQL 标签详解实用建议在 MyBatis 中进行多参数查询有多种灵活的方式下面我为你详细介绍最常用的几种方法及其适用场景。方法适用场景优点缺点Param 注解参数数量较少2-5个的固定查询代码直观参数名明确可读性强参数过多时代码冗长Map 传参动态条件查询参数不固定灵活性高适合条件动态变化类型不安全key容易拼写错误Java Bean 对象参数较多且有明确业务含义结构清晰类型安全易于维护需要创建额外的类MyBatis-Plus QueryWrapper使用 MyBatis-Plus 框架的项目链式调用编程式构建条件仅适用于 MyBatis-Plus1. 使用 Param 注解推荐用于参数较少场景这是最常用的多参数传递方式通过在接口方法参数前添加Param注解来为参数命名。Mapper 接口public interface UserMapper { User findByUsernameAndEmail( Param(username) String username, Param(email) String email ); // 用于 IN 查询的列表参数 ListUser findUsersByIds(Param(ids) ListLong ids); }XML 映射文件select idfindByUsernameAndEmail resultTypeUser SELECT * FROM users WHERE username #{username} AND email #{email} /select select idfindUsersByIds resultTypeUser SELECT * FROM users WHERE id IN foreach collectionids itemid open( separator, close) #{id} /foreach /select2. 使用 Map 传参适合动态查询当查询条件不固定时使用 Map 可以灵活地传递参数。Mapper 接口public interface UserMapper { ListUser findUsersByCondition(MapString, Object params); }Service 层调用public ListUser searchUsers(String name, Integer age, String email) { MapString, Object params new HashMap(); if (name ! null) params.put(name, name); if (age ! null) params.put(age, age); if (email ! null) params.put(email, email); return userMapper.findUsersByCondition(params); }XML 映射文件使用动态 SQLselect idfindUsersByCondition parameterTypemap resultTypeUser SELECT * FROM users where if testname ! null AND name LIKE CONCAT(%, #{name}, %) /if if testage ! null AND age #{age} /if if testemail ! null AND email #{email} /if /where /select3. 使用 Java Bean 对象推荐用于复杂查询当参数较多且有明确业务含义时创建一个专门的查询参数对象是最佳选择。查询参数类public class UserQueryParams { private String username; private String email; private Integer minAge; private Integer maxAge; private Date createTimeStart; private Date createTimeEnd; // getter 和 setter 方法 }Mapper 接口public interface UserMapper { ListUser findUsersByQueryParams(UserQueryParams params); }XML 映射文件select idfindUsersByQueryParams parameterTypeUserQueryParams resultTypeUser SELECT * FROM users where if testusername ! null AND username #{username} /if if testemail ! null AND email #{email} /if if testminAge ! null AND age #{minAge} /if if testmaxAge ! null AND age #{maxAge} /if if testcreateTimeStart ! null AND create_time #{createTimeStart} /if if testcreateTimeEnd ! null AND create_time #{createTimeEnd} /if /where ORDER BY create_time DESC /select4. MyBatis-Plus QueryWrapper现代化选择如果你使用 MyBatis-PlusQueryWrapper 提供了更简洁的链式编程方式。使用示例Service public class UserService { Autowired private UserMapper userMapper; public ListUser findUsers(String username, Integer minAge, Integer maxAge) { QueryWrapperUser queryWrapper new QueryWrapper(); if (username ! null) { queryWrapper.like(username, username); } if (minAge ! null) { queryWrapper.ge(age, minAge); } if (maxAge ! null) { queryWrapper.le(age, maxAge); } queryWrapper.orderByDesc(create_time); return userMapper.selectList(queryWrapper); } // 分页查询 public PageUser findUsersWithPage(PageUser page, UserQueryParams params) { QueryWrapperUser queryWrapper new QueryWrapper(); // 构建查询条件... return userMapper.selectPage(page, queryWrapper); } }动态 SQL 标签详解MyBatis 提供了强大的动态 SQL 功能让多条件查询更加灵活where自动处理 WHERE 关键字和 AND 连接符if条件判断只有条件满足时才包含对应的 SQL 片段choose、when、otherwise类似 Java 的 switch-case 结构foreach遍历集合常用于 IN 查询实用建议简单查询2-3个参数优先使用Param 注解动态条件查询使用Map 或QueryWrapper复杂业务查询使用Java Bean 对象列表查询结合foreach 标签新项目推荐使用MyBatis-Plus 简化开发选择哪种方式主要取决于你的具体需求参数数量、是否动态变化、代码可维护性要求等。希望这些示例能帮助你更好地使用 MyBatis 进行多参数查询❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧