本篇介绍easymybatis如配置乐观锁和逻辑删除。
easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现。即:数据库增加一个int或long类型字段version,然后实体类version字段上加上@Version注解即可。实现原理是根据mysql的行锁机制(InnoDB下),同一条记录只能被一条SQL执行,后面的SQL排队等待。这样version改变后,等待中的SQL还是老的version号,因此更新失败。
@Version
private Long version;
从1.7版本开始支持逻辑删除功能,即更新一个字段标记为已删除。查询的时候会自动过滤掉已删除的数据。
假设数据库表中有一个字段is_deleted类型为tinyint,0表示未删除,1表示已删除。
实体类对应代码如下:
public class User {
@LogicDelete
private Byte isDeleted;
}
在执行dao.del(user);时会触发UPDATE语句,将is_deleted字段更新为1。
如果is_deleted类型为char(1),f表示未删除,t表示已删除。
@LogicDelete(notDeleteValue = "f", deleteValue = "t")
private String isDeleted;
@LogicDelete提供两个属性
假设1表示未删除,2表示已删除,@LogicDelete的设置方法如下:@LogicDelete(notDeleteValue = “1”, deleteValue = “2”)。如果每个实体类都要这样设置的话会很麻烦,easymybatis提供了全局配置
# 未删除数据库保存的值,默认为0
mybatis.logic-not-delete-value=1
# 删除后数据库保存的值,默认为1
mybatis.logic-delete-value=2
<!-- 替换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>
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/thc1987/article/details/79347159
内容来源于网络,如有侵权,请联系作者删除!