MyBatis从入门到精通:insert用法

2.4.1 简单的insert方法

 

1.接口类中的方法:

int insert(SysUser sysUser);

2.映射文件中的修改:

    <!--
        insert标签包含如下的属性:
            id:
            parameterType:即将传入的语句参数的完全限定类名或别名。这个属性是可选的,
                因为MyBatis可以推断出传入语句的具体参数,因此不建议配置该属性。(这个
                就是接口方法的形式参数!!!)
            flushCache:默认值为true,任何时候只要语句被调用,都会清空一级二级缓存
            timeout:设置在抛出异常之前,驱动程序等待数据库返回请求结果的秒数

            ========================这个对应与JDBC的statement=====================
            statementType:对于STATEMENT,PREPARED,CALLABLE,MyBatis会分别使用
            对应的Statement、PreparedStatement、CallableStatement,默认值为PREPARED
            ====================================================================

            ===============================这两个是一组的=========================
            useGeneratedKeys:默认值是false,如果设置为true,MyBatis会使用JDBC的get
                GeneratedKeys方法来取出由数据库内部生成的主键
            keyProperty:MyBatis通过GeneratedKeys获取主键值后将要赋给的属性名。如果希望
                得到多个数据库自动生成的列,属性值也可以是以逗号分割的属性名列表。
            ====================================================================

            ================================不懂=================================
            keyColumn:仅对INSERT和UPDATE有用,通过生成的键值设置表中的别名,这个设置仅在某些
                数据库中是必须的。
            databaseId:如果配置了databaseIdProvider,Mybatis会加载所有的不带databaseId的
                或者匹配当前databaseId的语句。
            =====================================================================

        为了放置出错,对于一些特殊的数据类型,建议指定具体的jdbcType值。例如headImg指定BLOB类型
        createTime指定TIMESTAMP类型。BLOB对应的类型是ByteArrayInputStream,就是二进制数据流
        由于数据库区分date、time、datetime类型,但是Java中一般都使用java.util.Date类型。因此
        为了保证数据类型的正确,需要手动指定日期类型,date,time,datetime对应JDBC类型分别为DATE
        ,TIME,TIMESTAMP。
            分析:BLOB那个没看懂,但是date、time、datetime看懂了点,就是说你定义类型时,如果
            用了Date类型定义变量,则你插入的时候,最好用jdbcType属性说明一下你插入的究竟是数据
            库中的哪种类型。

        数据库中的datetime类型可以储存date和timestamp类型这两种类型的值,但是不能存储time类型
        的时间。
    -->
    <insert id="insert">
        INSERT INTO sys_user
          (id,user_name,user_password,user_email,user_info,head_img,create_time)
        VALUES
          (#{id},#{userName},#{userPassword},#{userEmail},#{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})
    </insert>

 


2.4.2 使用JDBC方式返回主键自增的值

1.接口类中增加的方法:

    int insert2(SysUser sysUser);

 

2.映射文件增加的代码:

    <insert id="insert2" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO sys_user
          (id,user_name,user_password,user_email,
          user_info,head_img,create_time)
        VALUES
          (#{id},#{userName},#{userPassword},#{userEmail},
          #{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})
    </insert>

 


2.4.3 使用selectKey返回主键的值

1.接口类中增加的方法:

    int insert3(SysUser sysUser);

 

2.映射文件增加的代码:

    <insert id="insert3">
        INSERT INTO sys_user
          (id,user_name,user_password,user_email,
          user_info,head_img,create_time)
        VALUES
          (#{id},#{userName},#{userPassword},#{userEmail},
          #{userInfo},#{headImg,jdbcType=BLOB},#{createTime,jdbcType=TIMESTAMP})

        <!--
            selectKey标签的属性:
                keyColumn:
                keyProperty:
                resultType:
                order:该属性与数据库有关。在MySQl中,为after值
        -->
        <selectKey keyColumn="id" resultType="long" keyProperty="id" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
    </insert>

 

转载于:https://www.cnblogs.com/junjie2019/p/10568796.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值