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 方法執行結果





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章