MyBatis 3的XML映射文件是定义数据映射关系和SQL语句的地方。每个映射文件对应一个数据库映射器(Mapper),用于将数据库表和Java对象进行映射,同时定义了执行CRUD操作的SQL语句。

以下是XML映射文件的基本结构和一些常用元素:

1. <mapper> 元素

映射文件的根元素是 <mapper>,用于定义命名空间和包含映射规则和SQL语句。
<mapper namespace="com.example.mapper.UserMapper">
    <!-- 映射规则和SQL语句 -->
</mapper>

namespace 属性指定了映射器接口的全限定名,与Java中的映射器接口一致。

2. <resultMap> 元素

<resultMap> 用于定义查询结果集的映射规则。
<resultMap id="userResultMap" type="com.example.model.User">
    <id column="id" property="id"/>
    <result column="username" property="username"/>
    <result column="password" property="password"/>
</resultMap>

id 属性指定了结果集映射规则的唯一标识,type 属性指定了映射到的Java对象类型。<id> 和 <result> 元素分别定义了主键和普通字段的映射规则。

3. <select>、<insert>、<update>、<delete> 元素

分别用于定义查询、插入、更新和删除操作的SQL语句。
<select id="getUserById" resultMap="userResultMap" parameterType="java.lang.Long">
    SELECT * FROM users WHERE id = #{id}
</select>

<insert id="insertUser" parameterType="com.example.model.User">
    INSERT INTO users(username, password) VALUES (#{username}, #{password})
</insert>

<update id="updateUser" parameterType="com.example.model.User">
    UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}
</update>

<delete id="deleteUser" parameterType="java.lang.Long">
    DELETE FROM users WHERE id = #{id}
</delete>

这些元素的 id 属性对应于映射器接口中的方法名称,resultMap 属性指定了查询结果集的映射规则,parameterType 属性指定了方法参数的类型。

4. 动态SQL

MyBatis支持动态SQL,可以在映射文件中使用 <if>、<choose>、<when>、<otherwise> 等元素构建动态SQL语句,以根据条件拼接不同的SQL片段。
<select id="getUsers" resultMap="userResultMap">
    SELECT * FROM users
    <where>
        <if test="username != null">
            AND username = #{username}
        </if>
        <if test="password != null">
            AND password = #{password}
        </if>
    </where>
</select>

在这个例子中,<where> 元素用于包装条件语句,<if> 元素根据条件判断是否拼接对应的SQL片段。

这些是MyBatis映射文件的基本元素和结构。通过合理使用这些元素,你可以定义灵活且强大的数据映射规则和SQL语句,实现数据库操作的自定义和优化。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7006/MyBatis