侧边栏壁纸
博主头像
小小酥心

旧书不厌百回读,熟读精思子自知💪

  • 累计撰写 22 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Mapper文件说明

小小酥心
2022-02-11 / 0 评论 / 2 点赞 / 1,420 阅读 / 5,197 字
温馨提示:
本文最后更新于 2022-02-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
<?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">

<!--
    namespace绑定了与之对应的接口,值是该接口的全限定名;这个参数有且只有一个
-->
<mapper namespace="cn.rainbowbus.dao.CustomerMapper">

    <!--
        用来描述select语句返回字段与java属性的映射关系。
        可以有多个resultMap标签,用不同id区分不同标签。
        可以实现一对多,多对多关系
    -->
    <resultMap  id="DocResult" type="cn.rainbowbus.entity.Customer">
        <!--
            column是表中的字段名。
            property是对应的java属性。
            jdbcType: 数据库中字段类型,它与Java中属性类型有对应关系,详情看下表。

            id:数据库主键字段。
            result:普通字段。

            一对多标签 :
            <collection> property:对应的java属性名  ofType:对应的java属类型
                <id property="java属性" column="author_third_id" jdbcType="BIGINT"/>
                <result property="java属性" column="account_id" jdbcType="VARCHAR"/>
        -->
        <id column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" javaType="string"  property="name" />
        <result column="logo" jdbcType="VARCHAR" property="logo" />
        <result column="describe" jdbcType="VARCHAR" property="describe" />
        <result column="is_enable" jdbcType="BIT" property="isEnable" />
        <result column="phone" jdbcType="VARCHAR" property="phone" />
        <result column="admin" jdbcType="VARCHAR" property="admin" />
        <result column="password" jdbcType="VARCHAR" property="password" />
        <result column="uuid" jdbcType="VARCHAR" property="uuid" />
    </resultMap>

    <!--
        可以重用的 SQL 块,也可以被其他语句引用。
    -->
    <sql id="selectConfigVo">
        select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by,
        update_time, remark
        from sys_config
    </sql>

    <sql id="Example_Where_Clause">
        <!--
            where 可以自动去除sql语句where关键字后的and关键字
        -->
        <where>
            <!--
                向sql传递数组或List, mybatis使用foreach解析,可以做批量处理。

                collection:传入的集合的变量名称(要遍历的值)。
                item:每次循环将循环出的数据放入这个变量中。
                open:循环开始拼接的字符串。
                close:循环结束拼接的字符串。
                separator:循环中拼接的分隔符。
            -->
            <foreach collection="oredCriteria" item="criteria" separator="or">
                <!--
                    判断语句。test值等于true执行,等于false跳过
                    test可以是一个值为Boolean型的计算语句
                -->
                <if test="criteria.valid">
                    <!--
                        前缀'and' 被'(' 替换
                        prefix:前缀覆盖并增加其内容 不写的话默认替换为空
                        suffix:后缀覆盖并增加其内容 不写的话默认替换为空
                        prefixOverrides:前缀判断的条件
                        suffixOverrides:后缀判断的条件
                    -->
                    <trim prefix="(" prefixOverrides="and" suffix=")">
                        <foreach collection="criteria.criteria" item="criterion">
                            <!--
                                choose 是或(or)的关系。
                                choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。
                                当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。
                                类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
                            -->
                            <choose>
                                <when test="criterion.noValue">
                                    and ${criterion.condition}
                                </when>
                                <when test="criterion.singleValue">
                                    and ${criterion.condition} #{criterion.value}
                                </when>
                                <when test="criterion.betweenValue">
                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                                </when>
                                <when test="criterion.listValue">
                                    and ${criterion.condition}
                                    <foreach close=")" collection="criterion.value" item="listItem" open="("
                                             separator=",">
                                        #{listItem}
                                    </foreach>
                                </when>
                            </choose>
                        </foreach>
                    </trim>
                </if>
            </foreach>
        </where>
    </sql>

    <!--
        select查询语句标签
        id: 与namespace接口中的方法名对应
        parameterType: 参数类型
        resultMap : 返回值类型
        自增IDset到对象中: useGeneratedKeys="true" keyProperty="id" keyColumn="id"
        支持类型简写,详情看下表
    -->
    <select id="selectByExample" useGeneratedKeys="true" keyProperty="id" keyColumn="id"
            parameterType="cn.rainbowbus.entity.CustomerExample" resultMap="BaseResultMap">
        select
        <if test="distinct">
            distinct
        </if>
        <!--
            引入一个SQL模块
        -->
        <include refid="Base_Column_List"/>
        from customer
        <if test="_parameter != null">
            <include refid="Example_Where_Clause"/>
        </if>
        <if test="orderByClause != null">
            order by ${orderByClause}
        </if>
        <if test="startRow != null">
            limit #{startRow} , #{pageSize}
        </if>
    </select>

    <!--
        delete删除语句标签
        id: 与namespace接口中的方法名对应
        parameterType: 参数类型
    -->
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete from customer
        where id = #{id,jdbcType=INTEGER}
    </delete>

    <!--插入语句-->
    <insert id="insert" parameterType="cn.rainbowbus.entity.Customer">
        insert into customer (id, name, logo,
        describe, is_enable, phone,
        admin, password, uuid
        )
        values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{logo,jdbcType=VARCHAR},
        #{describe,jdbcType=VARCHAR}, #{isEnable,jdbcType=BIT}, #{phone,jdbcType=VARCHAR},
        #{admin,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{uuid,jdbcType=VARCHAR}
        )
    </insert>

    <select id="getList" resultMap="DocResult">
        select * from sys_doc where id = #{id}
    </select>
</mapper>
2

评论区