Mybatis通用Mapper使用

通用Mapper的使用方便了对Mybatis单表的增删改查等操作,不需要写SQL语句,只需调用接口中提供的方法.

updateByPrimarykey vs updateByPrimaryKeySelective


前者,只是更新新的model中非NULL的字段

后者,更新非NULL字段,其他字段均置为NULL。

如有 表t_order:


表 t_order,对应的实体类是Order:
</pre><p style="margin-top: 0px; margin-bottom: 25px; font-size: 15px; line-height: 1.7; word-break: break-word; color: rgb(47, 47, 47); font-family: 'lucida grande', 'lucida sans unicode', lucida, helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;"><pre name="code" class="java">package ...

import ...

@Table (name ="t_order")

public classOrder {
	@Id
	private String id;//UUID
	private String orderno;//订单号
	private String userid;//下单人
	private Date enteringdate;//下单日期
	private String shipto;//送达地址

	public String getId() {  return id;  }
	public void setId(String id) {  this.id= id;  }
	public String getOrderno() {  return orderno;  }
	public void setOrderno(String orderno) {  this.orderno= orderno;  }
	public String getUserid() {  return userid;  }
	public void setUserid(String userid) {  this.userid= userid;  }
	public Date getEnteringdate() {  return enteringdate;  }
	public void setEnteringdate(Date enteringdate) {  this.enteringdate= enteringdate; }
	public String getShipto() {  returnshipto;  }
	public void setShipto(String shipto) {  this.shipto= shipto;  }
}

在.java中通过调用Mapper中的方法对表t_order进行操作,用其中一函数说明。

public void updateOrderShipAddress(String orderNo){
<span style="white-space:pre">	</span>if (isNotBlank(order)){
<span style="white-space:pre">		</span>Order order = new Order();
<span style="white-space:pre">		</span>order.setOrderno(orderNo);

<span style="white-space:pre">		</span>// 从数据库中找到要修改的这条数据
<span style="white-space:pre">		</span>List<Order> list = mapper.select(order);

<span style="white-space:pre">		</span>String id = null;
<span style="white-space:pre">		</span>if (list != null && list.size() != 0) {
<span style="white-space:pre">			</span>id = list.get(0).getId();
<span style="white-space:pre">			</span>order.setId(id);
<span style="white-space:pre">			</span>order.Shipto("安徽省马鞍山市xx小区xx号");
<span style="white-space:pre">			</span>// 更新收货地址
<span style="white-space:pre">			</span>mapper.updateByPrimaryKey(order);
        }
    }
}

如果用以上updateByPrimaryKey(order)方法,order对象中非null的数据将会对应地去t_order表中进行数据更新,其他的数据均置为NULL。

执行结果如下:


updateByPrimaryKey方法执行结果


若 mapper.updateByPrimaryKey(order改为 mapper.updateByPrimaryKeySelective(order);

执行结果如下:


updateByPrimaryKeySelective 方法执行结果





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值