在SSM(Spring + Spring MVC + MyBatis)框架中实现模糊查询,通常需要在Mapper接口中定义SQL语句,并在Service层调用该接口方法。以下是一个简单的示例:
1.在Mapper接口中定义模糊查询的方法:
// UserMapper.java
public interface UserMapper {
List<User> findByUsernameLike(@Param("username") String username);
}
2.在对应的Mapper XML文件中编写模糊查询的SQL语句:
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="findByUsernameLike" resultType="com.example.entity.User">
SELECT * FROM user WHERE username LIKE CONCAT('%', #{username}, '%')
</select>
</mapper>
3.在Service层调用Mapper接口方法进行查询:
// UserService.java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> searchByUsername(String username) {
return userMapper.findByUsernameLike(username);
}
}
4.在Controller层调用Service层方法并处理请求:
// UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/search")
public String search(@RequestParam("username") String username, Model model) {
List<User> users = userService.searchByUsername(username);
model.addAttribute("users", users);
return "userList"; // 假设有一个userList的视图用于展示用户列表
}
}
在这个例子中,我们定义了一个findByUsernameLike的方法,它接受一个username参数,并在SQL语句中使用LIKE关键字进行模糊查询。CONCAT函数用于拼接SQL语句中的查询字符串,实现了百分号(%)的前后缀匹配。在Service层,我们调用了Mapper接口的方法来执行查询,并在Controller层处理了HTTP请求,将查询结果传递给视图进行展示。