开发者

MyBatis update标签详解

开发者 https://www.devze.com 2023-11-09 11:42 出处:网络 作者: 小日子呀
目录update 标签常用属性传递多个参数使用 Map 传递参数使用注解传递参数使用 JavaBean 传递参数区别在 WebsiteMapper.XML 中添加以下更新语句
目录
  • update 标签常用属性
  • 传递多个参数
    • 使用 Map 传递参数
    • 使用注解传递参数
    • 使用 JavaBean 传递参数
  • 区别

    在 WebsiteMapper.XML 中添加以下更新语句

    <!--update 标签-->
    <update id="updateWebsite" parameterType="string">
        update websiwww.devze.comte set name = #{name}
    </update>

    在 WebsiteMapper 接口中增加一个 updateWebsite() 方法

    int updateWebsite(String name);

    参数为 String 类型的字符串;返回值为 int 类型,表示执行 sql 语句后受影响的记录的行数。

    update 标签常用属性

    属性名称描述备注
    id它和 Mapper 的命名空间组合起来使用,是唯一标识符,供 MyBATis 调用如果命名空间+ id 不唯一,那么 MyBatis 抛出异常
    parameterType传入 SQL 语句的参数类型的全限定名或别名,它是一个可选属性。支持基本数据类型和 JavaBean、Map 等复杂数据类型
    flushCache该属性用于设置执行该操作后,是否会清空二级缓存和本地缓存,默认值为 true。-
    timeout该属性用于设置 SQL 执行的超时时间,如果超时,就抛异常。-
    statementType执行 SQL 时使用的 statement 类型, 默认为 PREPARED,可选值:STATEMENT,PREPARED 和 CALLABLE。-

    注意:update 标签中没有 resultType 属性,只有查询操作才需要对返回结果类型进行相应的指定。

    传递多个参数

    在上面的示例中,我们在更新语句中只使用了一个 String 类型的参数,而在实际的开发过程中,大多数时候,我们的更新语句都需要使用多个参数,Mybatis 为我们提供以下 3 种方式,来实现给映射器传递多个参数:

    • 使用 Map 传递参数
    • 使用注解传递参数
    • 使用 JavaBean 传递参数

    使用 Map 传递参数

    可以将参数封装到一个 Map 对象中,然后传递给 MyBatis 的映射器 ,在 WebsiteMapper 接口中,定义一个 updateWebsiteByMap() 方法,并使用 Map 传递参数

    int updateWebsiteByMap(Map<String, Object> params);

     在 WebsiteMapper.xml 使用 update 标签定义一个 update 语句,并接收通过 Map 传递的参数

    <!--更新语句接收 Map 传递的参数-->
    <update id="updateWebsiteByMap" parameterType="map">
        update website set name = #{name},url= #{url} where id = #{id}
    </update>

    使用注http://www.devze.com解传递参数

    还可以使用 MyBatis 提供的 @Param 注解给注解器传递参数,在 WebsiteMapper 接口中,定义一个 updateWebsiteByParam() 方法,并使用 @Param 注解传递参数

    int updateWebsiteByParam(@Param("name") String name, @Param("url") String url, @Param("id") Integer id);

    在 WebsiteMapper.xml 中使用 update 标签定义一个 update 语句,并接收通过 @Param 注解传递的参数

    <!--更新语句接收 @Param 注解传递的参数-->
    <update id="updateWebsiteByParam">
        update website set name = #{name},url= #{url} where id = #{id}
    </update>

    使用 JavaBean 传递参数

    在参数过多的情况下,可以将参数通过 setter 方法封装到 JavaBean(实体类)对象中php传递给映射器

    <!--更新语句接收 JavaBean 传递的参数-->
    <update id="updateWebsiteByJavaBean" parameterType="net.cc.www.po.Website">
        update website set name = #{name},url= #{url} where id = #{id}
    </update>

    区别

    以上 3 种方式的区别如下:

    • 使用 Map 传递参android数会导致业务可读性的丧失,继而导致后续扩展和维护的困难,所以在实际应用中我们应该果断废弃该方式。
    • 使用 @Param 注解传递参数会受到参数个数的影响。当 n≤5 时,它是最佳的传参方式,因为它更加直观;当 n>5 时,多个参数将给调用带来困难。
    • 当参数个数大于 5 个时,建议使用 JavaBeanpython 方式。

    到此这篇关于MyBatis update标签的文章就介绍到这了,更多相关MyBatis update标签内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消