mybatis自动添加逻辑删除
2024-08-28 15:57
124
0
1、在mybatis中,为了方便筛选逻辑删除的,会在配置文件中默认添加以下配置信息(logic-delete-value及logic-not-delete-value):
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台显示SQL语句
global-config:
db-config:
id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
# id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
# id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
# id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
同时,在实体的字段中添加以下注解:
/**
* 是否删除
*/
@TableLogic
private Boolean deleted;
这样,在查询的时候,默认会在SQL语句中添加deleted=0的脚本。
2、如何控制是否传deleted=0的脚本,可以通过以下两种方法:
在mapper中通过注解来写SQL语句
public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User selectById(@Param("id") int id); }
在xml文件中来写SQL语句
<mapper namespace="com.example.mapper.UserMapper"> <select id="selectById" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
以上两种方式的本质是一样的,都是自己构造完整的SQL语句
全部评论