mybatis實現數據邏輯刪除

從1.7版本開始支持邏輯刪除功能,即更新一個字段標記爲已刪除。查詢的時候會自動過濾掉已刪除的數據。

假設數據庫表中有一個字段is_deleted類型爲tinyint,0表示未刪除,1表示已刪除。java

實體類對應代碼以下:spring

public class User { @LogicDelete private Byte isDeleted; }

在執行dao.del(user);時會觸發UPDATE語句,將is_deleted字段更新爲1。sql

若是is_deleted類型爲char(1),f表示未刪除,t表示已刪除。數據庫

@LogicDelete(notDeleteValue = "f", deleteValue = "t") private String isDeleted;

@LogicDelete提供兩個屬性springboot

  • notDeleteValue:指定未刪除時的值,不指定默認爲0
  • deleteValue:指定刪除後保存的值,不指定默認爲1

假設1表示未刪除,2表示已刪除,@LogicDelete的設置方法以下:@LogicDelete(notDeleteValue = 「1」, deleteValue = 「2」)。若是每一個實體類都要這樣設置的話會很麻煩,easymybatis提供了全局配置mybatis

  • springboot下,application.properties添加
# 未刪除數據庫保存的值,默認爲0 mybatis.logic-not-delete-value=1 # 刪除後數據庫保存的值,默認爲1 mybatis.logic-delete-value=2
  • springmvc設置方式以下:
<!-- 替換org.mybatis.spring.SqlSessionFactoryBean --> <bean id="sqlSessionFactory" class="net.oschina.durcframework.easymybatis.ext.SqlSessionFactoryBeanExt"> <property name="dataSource" ref="dataSource" /> <property name="configLocation"> <value>classpath:mybatis/mybatisConfig.xml</value> </property> <property name="mapperLocations"> <list> <value>classpath:mybatis/mapper/*.xml</value> </list> </property> <!-- 如下是附加屬性 --> <!-- dao所在的包名,跟MapperScannerConfigurer的basePackage一致 多個用;隔開 --> <property name="basePackage" value="com.myapp.dao" /> <property name="config"> <bean class="net.oschina.durcframework.easymybatis.EasymybatisConfig"> <property name="logicNotDeleteValue" value="1"/> <property name="logicDeleteValue" value="2"/> </bean> </property> </bean>
  • 注:若是同時設置了@LogicDelete參數和全局配置,會優先讀取註解中的配置。
相關文章
相關標籤/搜索