要实现复杂查询,可以利用MyBatis的动态SQL来动态构建SQL语句。下面是一个简单的示例,演示了如何使用动态SQL进行复杂查询:
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<if test="username != null">
AND username = #{username}
</if>
<if test="email != null">
AND email = #{email}
</if>
</where>
</select>
List<User> selectUsers(Map<String, Object> params);
Map<String, Object> params = new HashMap<>();
params.put("username", "test");
List<User> users = userDao.selectUsers(params);
通过这种方式,可以根据传入的查询条件动态构建SQL语句,实现复杂查询功能。同时,MyBatis还提供了其他的动态SQL标签,如foreach、set等,可以进一步扩展动态SQL的功能。