Mybatis Mapper模板(包含大多通用内容,可直接参照使用)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--<mapper> 标签用于定义 Mapper XML 文件。-->
<!--namespace 属性指定了该 Mapper XML 文件对应的 Mapper 接口的类路径。-->
<mapper namespace="com.mindskip.xzs.repository.UserTokenMapper">

    <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.UserToken">
        <!-- 这里的column指的是数据库字段名称, jdbcType指的是数据库类型type,property指的是映射到result中的属性名-->
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="token" jdbcType="VARCHAR" property="token" />
        <result column="user_id" jdbcType="INTEGER" property="userId" />
        <result column="wx_open_id" jdbcType="VARCHAR" property="wxOpenId" />
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
        <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
        <result column="user_name" jdbcType="VARCHAR" property="userName" />
    </resultMap>
    <!--使用-->
    <select id="selectUserById" resultMap="UserToken">
        SELECT token, create_time, user_name
        FROM users
        WHERE user_id = #{id}
    </select>

    <!--<sql> 标签在 MyBatis 中用于定义可重用的 SQL 片段,可以在多个 SQL 映射文件中引用。它通常与<include>标签一起使用 -->
    <sql id="userColumns">
        id, username, password
    </sql>

    <!--在insert标签中同时插入多条数据-->\
    <!--
        id 属性指定了这个 SQL 语句的唯一标识符。
        parameterType 属性指定了传递给 SQL 语句的参数类型,这里是一个 java.util.List,表示要插入的多个用户对象的集合。
        <foreach> 标签用于迭代传入的用户对象列表。
        collection: 指定要迭代的集合或数组的属性名。这个属性的值通常是一个 OGNL 表达式,用于指定传入 SQL 语句的参数中的集合对象。例如,collection="list" 就表示要迭代传入的 list 对象。
        item: 指定在迭代过程中每个元素的别名。这个属性的值是一个字符串,用于在迭代过程中代表集合中的每个元素。例如,item="user" 就表示在迭代过程中每个元素都可以使用 user 这个别名来引用。
        index: 可选属性,指定在迭代过程中的索引值。如果集合是列表或数组,则可以使用 index 属性获取当前元素的索引值。这个属性的值通常是一个字符串,用于在迭代过程中代表索引值。例如,index="index" 就表示在迭代过程中可以使用 index 这个别名来引用当前元素的索引值
        open: 可选属性,指定迭代的开始字符串。这个属性的值通常是一个字符串,在迭代开始之前会先输出这个字符串。例如,open="(" 就表示在迭代开始之前会输出 (。
        close: 可选属性,指定迭代的结束字符串。这个属性的值通常是一个字符串,在迭代结束之后会输出这个字符串。例如,close=")" 就表示在迭代结束之后会输出 )。
        separator: 可选属性,指定每次迭代之间的分隔符。这个属性的值通常是一个字符串,在每次迭代之间会输出这个字符串。例如,separator="," 就表示在每次迭代之间会输出 ,。
        在 <foreach> 标签内部,可以引用 user 对象的属性,如 #{user.username} 和 #{user.password},这样可以动态地插入每条记录的值。
    -->
    <insert id="insertUsers" parameterType="java.util.List">
        INSERT INTO users (username, password) VALUES
        <foreach collection="list" item="user" separator="," open="(" close=")">
            #{user.username}, #{user.password}
        </foreach>
    </insert>

    <!--
      <where> 标签是 MyBatis 中的一个非常有用的动态 SQL 标签,它用于在 SQL 查询语句中添加 WHERE 子句。它的主要作用是根据条件动态地拼接 WHERE 子句,同时避免了额外的条件语句带来的问题
      <where> 标签会自动去除首个条件语句之前的 AND 或 OR 连接符,以及最后一个条件语句之后的连字符。
      类同<set>标签
      -->
    <select id="selectUsers" resultType="User">
        SELECT * FROM users
        <where>
            <if test="username != null">
                AND username = #{username}
            </if>
            <if test="age != null">
                AND age = #{age}
            </if>
        </where>
    </select>

    <!--
        查询结果为map
        结果为数据库字段为key, 查出的值为value
    -->
    <select id="selectUserMap" resultType="java.util.Map">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <!--
        批量删除
      -->
    <delete id="deleteUsersByIdList" parameterType="java.util.List">
        DELETE FROM users WHERE id IN
        <foreach collection="list" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>

    <!--
        <trim> 常用于处理 SQL 语句中的空白字符。
        可以用于去除 SQL 语句中多余的空格和逗号,以及动态地添加 WHERE 子句的起始关键字(如 AND 或 OR)
        <trim> 标签包含了以下几个属性:
            prefix:将trim标签中内容前面添加指定内容。
            prefixOverrides:将trim标签中内容前面去除指定内容。
            suffix:将trim标签中内容后面添加指定内容。
            suffixOverrides:将trim标签中内容后面去除指定内容。
      -->
    <select id="selectUsers" resultType="User">
        SELECT * FROM users
        <where>
            <trim prefix="AND" prefixOverrides="AND">
                <if test="username != null">
                    AND username = #{username}
                </if>
                <if test="email != null">
                    AND email = #{email}
                </if>
            </trim>
        </where>
    </select>

    <!--
      我们知道UPDATE是更新字段的值,但当我们需要更新多条语句中的一部分时,UPDATE就不适用了
      我们可以使用REPLACE 函数
      语法:REPLACE(string, old_substring, new_substring)
        string:要进行替换操作的字符串。
        old_substring:要替换的子串。
        new_substring:替换后的新子串。
      -->
    <update id="updatesql">
        UPDATE users
        SET email = REPLACE(email, '@example.com', '@newdomain.com')
        WHERE email LIKE #{email};
    </update>
    
</mapper>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值