支持按员工姓名或员工号查询 mapper.xml怎么写 用动态sql怎么链接到一起
时间: 2024-12-02 17:14:46 浏览: 16
在MyBatis中,如果你想通过员工姓名或员工号查询数据,并使用动态SQL实现,通常会在mapper.xml文件中设置一个通用的映射(Dynamic SQL),然后在方法体中传入条件作为参数。以下是一个简单的示例:
```xml
<mapper namespace="com.example.YourMapper">
<!-- 定义一个通用的SQL模板 -->
<select id="queryEmployee" resultType="com.example.Employee">
SELECT * FROM employees
<choose>
<when test="#empName != null">
AND name = #{empName}
</when>
<otherwise>
AND employee_id = #{employeeId}
</otherwise>
</choose>
</select>
<!-- 调用方法,传入员工名或员工号 -->
<select id="getEmployeeByParam" parameterType="map" resultMap="BaseResultMap">
${queryEmployee}
<!-- 这里#{params}是方法的输入参数,MyBatis会自动将empName或employeeId替换到SQL中对应的位置 -->
<where>
${params.empName != null ? 'empName' : 'employeeId'} IS NOT NULL
</where>
</select>
</mapper>
```
在这个例子中,`getEmployeeByParam`方法接收一个map类型的参数,其中可能包含`empName`和`employeeId`两个键。如果传入了`empName`,则动态添加`name = #{empName}`到SQL中;如果没有传,则添加`employee_id = #{employeeId}`。注意`${params.empName != null ? 'empName' : 'employeeId'}`这部分是动态判断并选择字段的关键。
阅读全文