【在线教育平台】插入(insert)的实现流程

我们要把realname、username、password插入到数据库中。现在我们来一步步的在mapper中实现。

一:语句块的头部

在这里插入图片描述
(1)id:和dao层的接口对应,表示我实现的是此接口
在这里插入图片描述
(2)parameterType:参数,即跳转到AuthUser文件中,复制其完整路径即可。
在这里插入图片描述
(3)flushCache:如果为true,则表示当语句被调用时,会清空缓存。
附上flushCache的用法:

  • 当为select语句时:

flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。

  • 当为insert、update、delete语句时:

flushCache默认为true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。

(4)userGeneratedKeys和keyProperty:
这两个属性的意思是:把数据库表的主键id设置为自动增长

二:insert语句

这是基本的语法,就是将数据以字符串的形式存入相应字段中。有了#{},我们就能将123转换为"123"。
在这里插入图片描述

三:if语句

现在我们将上面的语句升级一下。试想,如果前端只传来了username、password的值,而没有realname的值,将他们插入的时候,系统会不会报异常?如果realname在数据库中设置的属性为非空,那肯定会报。
怎么解决呢?使用if语句。

<insert id="createSelectivity" parameterType="com.online.college.core.auth.domain.AuthUser"
            flushCache="true" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_auth_user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="realname!=null">
                realname,
            </if>
            <if test="username!=null">
                username,
            </if>
            <if test="password!=null">
                password,
            </if>
            values
            <if test="password!=null">
                password,
            </if>
        </trim>
        <if test="realname!=null">
            #{realname},
        </if>
        <if test="username!=null">
            #{username},
        </if>
        <if test="password!=null">
            #{password},
        </if>
    </insert>

我们先来说一下这句话的意思:
在这里插入图片描述
上面的红线是用来分割的,方便读者分析。
prefix:给trim标签内sql语句加上前缀,就是在realname前面加上(。
suffix:在trim标签内sql语句加上后缀,在password后面加上)。
suffixOverrides:指定去除多余的后缀内容,比如(realname,username,password)的password后面是没有逗号的,但是在if语句中有,suffix的作用就是去除掉它。
再来说说if语句的作用。
if语句就是说如果有realname的值,那我就插入,如果没有,就算了。
至此,一个完整的insert语句就完成了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡夫卡的熊kfk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值