在MyBatis 3 XML映射文件中,<select> 元素用于定义查询操作的SQL语句,指定了如何从数据库中检索数据,并且可以定义映射规则将数据库查询结果映射为Java对象。

以下是 <select> 元素的基本结构:
<select
    id="selectStatementId"
    resultType="fully.qualified.ResultType"
    parameterType="fully.qualified.ParameterType"
    resultMap="fully.qualified.ResultMap">
  
    <!-- SQL查询语句 -->
    SELECT * FROM your_table WHERE column = #{parameterName}

</select>

  •  id 属性是映射器接口中对应方法的名称,也是该查询语句的唯一标识。

  
  •  resultType 属性指定了查询结果集的映射类型,即返回的Java对象类型。


  •  parameterType 属性指定了方法参数的类型,可以是基本类型、包装类型或者自定义的Java对象。


  •  resultMap 属性指定了一个 <resultMap> 的ID,用于定义复杂的查询结果映射规则。


在 <select> 元素内部,可以编写常规的SQL查询语句,使用 #{parameterName} 形式的占位符来引用方法参数。MyBatis会将这些占位符替换为具体的参数值。

示例:
<select id="getUserById" resultType="com.example.model.User" parameterType="java.lang.Long">
    SELECT * FROM users WHERE id = #{id}
</select>

在这个例子中,getUserById 是映射器接口中对应方法的名称,resultType 是查询结果集的映射类型,parameterType 是方法参数的类型。查询语句使用了一个占位符 #{id},表示该查询语句需要接收一个名为 id 的参数。

你还可以使用动态SQL语句,例如使用 <if> 元素进行条件判断,构建更灵活的查询语句:
<select id="getUsers" resultType="com.example.model.User" parameterType="com.example.model.User">
    SELECT * FROM users
    <where>
        <if test="username != null">
            AND username = #{username}
        </if>
        <if test="password != null">
            AND password = #{password}
        </if>
    </where>
</select>

这个例子中,getUsers 方法接收一个 User 对象作为参数,通过 <where> 元素和 <if> 元素构建了一个动态的条件查询语句。

<select> 元素还有其他一些属性和子元素,可以根据实际需求进行配置,例如 fetchType、resultSetType、flushCache 等,以及 <include> 元素用于引入其他SQL片段。更详细的信息可以查阅官方文档:[MyBatis - Select](https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#select)。


转载请注明出处:http://www.zyzy.cn/article/detail/7007/MyBatis