// 动态SQL示例
public List getUserListByCondition(String userName, Integer age, String email) {
  String sql = "SELECT * FROM user WHERE 1=1";
  StringBuilder conditionBuilder = new StringBuilder();

  if (StringUtils.isNotBlank(userName)) {
    conditionBuilder.append(" AND user_name = #{userName}");
  }
  if (age != null) {
    conditionBuilder.append(" AND age = #{age}");
  }
  if (StringUtils.isNotBlank(email)) {
    conditionBuilder.append(" AND email = #{email}");
  }

  sql += conditionBuilder.toString();

  return sqlSession.selectList("getUserListByCondition", sql);
}

// 结果映射示例
public List getOrderListWithDetail() {
  return sqlSession.selectList("getOrderListWithDetail");
}

public interface OrderMapper {
  @Select("SELECT o.id, o.order_no, o.total_price, p.product_name " +
          "FROM order o " +
          "JOIN product p ON o.product_id = p.id")
  @Results(id = "orderResultMap", value = {
          @Result(property = "id", column = "id"),
          @Result(property = "orderNo", column = "order_no"),
          @Result(property = "totalPrice", column = "total_price"),
          @Result(property = "productName", column = "product_name")
  })
  List getOrderListWithDetail();
}

通过上述代码示例,我们可以使用MyBatis的动态SQL功能轻松地构建灵活的查询语句。同时,通过结果映射技巧,我们可以将数据库表的字段映射到Java对象的属性上,简化数据操作的过程。