在 Java 中使用 MyBatis 进行复杂查询,可以通过编写 SQL 映射文件和使用 MyBatis 提供的动态 SQL 标签来实现。以下是一个简单的复杂查询示例:
public class User { private int id; private String name; private int age; // 省略 getter 和 setter 方法 }  <?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"> <resultMap id="UserResultMap" type="com.example.entity.User"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> </resultMap> <select id="复杂查询" resultMap="UserResultMap"> SELECT * FROM user WHERE 1 = 1 <if test="name != null"> AND name LIKE CONCAT('%', #{name}, '%') </if> <if test="age != null"> AND age = #{age} </if> <include refid="分页查询" /> </select> <sql id="分页查询"> LIMIT #{offset}, #{pageSize} </sql> </mapper>  在这个示例中,我们使用了 MyBatis 的动态 SQL 标签(如 <if> 和 <include>)来实现复杂查询。<if> 标签用于根据条件判断是否添加 SQL 语句,<include> 标签用于引用其他 SQL 语句(如分页查询)。
package com.example.mapper; import com.example.entity.User; import java.util.List; public interface UserMapper { List<User> 复杂查询(String name, Integer age, int offset, int pageSize); }  package com.example.service; import com.example.entity.User; import com.example.mapper.UserMapper; import java.util.List; public class UserService { private UserMapper userMapper; public List<User> getUsers(String name, Integer age, int offset, int pageSize) { return userMapper.复杂查询(name, age, offset, pageSize); } }  现在,你可以通过调用 UserService 类的 getUsers 方法来实现复杂查询。