MyBatis映射文件中常用的各种元素标签及其属性

1、mapper:

  • 属性
    • namespace:指定命名空间,通常与接口或 DAO 类的全限定名一致,用于唯一标识映射文件中的各个 SQL 语句和映射。
<mapper namespace="com.example.dao.UserMapper">
    <!-- SQL statements and mappings go here -->
</mapper>

 2、resultMap:

  • 定义结果集到对象的映射关系,用于复杂查询或者需要定制映射规则的情况。
  • 属性
    • id:唯一标识该结果集映射。
    • type:映射的 Java 类型。
  • 属性
    • column:数据库列名。
    • property:Java 对象的属性名。
<resultMap id="userResultMap" type="User">
    <id property="id" column="user_id" />
    <result property="username" column="username" />
    <result property="email" column="email" />
    <!-- Other mappings -->
</resultMap>

 3、select:

  • 定义查询语句,通常用于从数据库中检索数据。
  • 属性
    • id:唯一标识该 SQL 语句,通常与命名空间结合使用。
    • resultType 或 resultMap:指定返回结果的类型或结果集映射。
<select id="getUserById" resultMap="userResultMap">
    SELECT * FROM users WHERE id = #{id}
</select>

 4、insert:

  • 定义插入语句,用于将数据插入到数据库中。
  • 属性
    • id:唯一标识该 SQL 语句,通常与命名空间结合使用。
    • parameterType:指定传入 SQL 语句的参数类型。
<insert id="insertUser" parameterType="User">
    INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>

 5、update:

  • 定义更新语句,用于更新数据库中的现有数据。
  • 属性
    • id:唯一标识该 SQL 语句,通常与命名空间结合使用。
    • parameterType:指定传入 SQL 语句的参数类型。
<update id="updateUser" parameterType="User">
    UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
</update>

 6、delete:

  • 定义删除语句,用于从数据库中删除数据。
  • 属性
    • id:唯一标识该 SQL 语句,通常与命名空间结合使用。
<delete id="deleteUserById">
    DELETE FROM users WHERE id = #{id}
</delete>

 7、parameterType:

  • 定义传递给SQL语句的参数类型,可以是基本类型、Java对象或者Map。
<select id="getUserById" resultMap="userResultMap" parameterType="long">
    SELECT * FROM users WHERE id = #{value}
</select>

 8、resultType:

  • 定义从数据库返回的单个结果对象的类型。
<select id="getUsernameById" resultType="String">
    SELECT username FROM users WHERE id = #{id}
</select>

 9、useGeneratedKeyskeyProperty:

  • 用于插入语句中,指示数据库是否自动生成主键以及将主键值设置到Java对象的哪个属性中。
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO users (username, email) VALUES (#{username}, #{email})
</insert>

 10、if:

  • 条件判断,根据条件动态包含 SQL 片段。
  • 属性
    • test:指定一个表达式,根据表达式的结果决定是否包含该条件中的 SQL 片段。
<select id="selectUsersByCriteria" parameterType="map" resultType="User">
    SELECT * FROM users
    <where>
        <if test="username != null">AND username = #{username}</if>
        <if test="email != null">AND email = #{email}</if>
    </where>
</select>

 11、choose、when、otherwise 元素:

  • 类似于 Java 中的 switch-case 结构,根据条件选择不同的分支。
  • 属性
    • 无特定的属性,但需要配合 when 和 otherwise 使用。
<select id="selectUsersByStatus" parameterType="String" resultType="User">
    SELECT * FROM users
    <where>
        <choose>
            <when test="status == 'active'">AND status = 'active'</when>
            <when test="status == 'inactive'">AND status = 'inactive'</when>
            <otherwise>AND status = 'unknown'</otherwise>
        </choose>
    </where>
</select>

12、foreach

  • 用于遍历集合,并生成对应的 SQL 片段。
  • 属性
    • item:指定在迭代过程中每个元素的名称。
    • collection:指定要迭代的集合。
    • open:指定迭代结果的开头部分。
    • close:指定迭代结果的结尾部分。
    • separator:指定在迭代结果之间放置的分隔符。
<select id="getUsersByIds" resultMap="userResultMap">
    SELECT * FROM users
    WHERE id IN
    <foreach item="id" collection="ids" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>

13、where:

  • 用于动态生成 SQL 查询语句的条件部分,并且能够处理条件为空时不生成多余的 ANDOR
<select id="getUser" resultMap="userResultMap">
    SELECT * FROM users
    <where>
        <if test="id != null">
            AND id = #{id}
        </if>
        <if test="username != null">
            AND username = #{username}
        </if>
    </where>
</select>
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值