通用Mapper的使用方便了對Mybatis單表的增刪改查等操作,不需要寫SQL語句,只需調用接口中提供的方法.
updateByPrimarykey vs updateByPrimaryKeySelective
前者,只是更新新的model中非NULL的字段
後者,更新非NULL字段,其他字段均置爲NULL。
如有 表t_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。
執行結果如下:
若 mapper.updateByPrimaryKey(order) 改爲 mapper.updateByPrimaryKeySelective(order);
執行結果如下: