首页 > 作文

MyBatis插入Insert、InsertSelective的区别及使用心得

更新时间:2023-04-04 00:22:39 阅读: 评论:0

目录

逆向自动生成的mybatis对应配置mapper文件里柳州医学高等专科学校面,有两个方法,分别为inrt和inrtlective。这两个方法均是插入对象的方法。为什么会有两个插入方法呢?这里说一下两者的区别。

首先我们看代码如下:

inrt方法

<inrt id="inrt" parametertype="demo.pojo.domain.hspmediainf" >    inrt into media_inf (med_q, emg_q, med_class,       med_name, med_file, med_extend,       med_type, med_date, med_size,       med_data)    values (#{medq,jdbctype=varchar}, #{emgq,jdbctype=varchar}, #{medclass,jdbctype=varchar},       #{medname,jdbctype=varchar}, #{medfile,jdbctype=varchar}, #{medextend,jdbctype=varchar},       #{medtype,jdbctype=varchar}, #{meddate,jdbctype=timestamp}, #{medsize,jdbctype=decimal},       #{meddata,jdbctype=blob})  </inrt>

inrtlective方法:

<inrt id="inrtlective" parametertype="activetech.zyyhospital.pojo.domain.hspmediainf" >    inrt into hsp_media_inf    <trim prefix="(" suffix=")" suffixoverrides="," >      <if test="medq != null" >        med_q,      </if>      <if test="emgq != null" >        emg_q,      </if>      <if test="medclass != null" >        med_class,      </if>      <if test="medname != null" >        med_name,      </if>      假行僧 张宇<if test="medfile != null" >        med_file,      </if>      <if test="medextend != null" >        med_extend,      </if>      <if test="medtype != null" >        med_type,      </if>      <if test="meddate != null" >        med_date,      </if>      <if test="medsize != null" >        med_size,      </if>      <if test="meddata != null" >        med_data,      </if>    </trim>    <trim prefix="values (" suffix=")" suffixoverrides="," >      <if test="medq != null" >        #{medq,jdbctype=varchar},      </if>      <if test="emgq != null" >短篇鬼故事大全        #{emgq,jdbctype=varchaE2160r},      </if>      <if test="medclass != null" >        #{medclass,jdbctype=varchar},      </if>      <if test="medname != null" >        #{medname,jdbctype=varchar},      </if>      <if test="medfile != null" >        #{medfile,jdbctype=varchar},      </if>      <if test="medextend != null" >        #{medextend,jdbctype=varchar},      </if>      <if test="medtype != null" >        #{medtype,jdbctype=varchar},      </if>      <if test="meddate != null" >        #{meddate,jdbctype=timestamp},      </if>      &脑筋急转弯大全及答案lt;if test="medsize != null" >        #{medsize,jdbctype=decimal},      </if>      <if test="meddata != null" >        #{meddata,jdbctype=blob},      </if>    </trim>  </inrt>

从上面连段代码我们会发现inrtlective对应的sql语句加入了null校验,只会插入数据不为null的字段值。inrt则会插入所有字段,会插入null。

笔者反思但是为什么会有这两种方法呢?

总结:由于真实开发中,我们在修改功能的from表单,或者一个类的某些模块编辑的from表单中不会将所有的数据都查询出来放到from表单中然后再inrt到数据库,所以我们经常在这些功能中使用inrtlective方法,此时只针对我们操作的属性进行inrt操作,而如果使用inrt方法,将会把非表单内的内容置为null从而影响数据安全。

本文发布于:2023-04-04 00:22:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/54c2b0433c492db0820528c9614766e5.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:MyBatis插入Insert、InsertSelective的区别及使用心得.doc

本文 PDF 下载地址:MyBatis插入Insert、InsertSelective的区别及使用心得.pdf

标签:方法   表单   字段   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图