application.xml文件内容
<!-- 定义MybatisPlus的全局策略配置-->
<bean id ="globalConfiguration" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 在2.3版本以后,dbColumnUnderline 默认值就是true -->
<property name="dbColumnUnderline" value="true"></property>
<!-- Mysql 全局的主键策略 -->
<!-- <property name="idType" value="0"></property> -->
<!-- Oracle全局主键策略 -->
<property name="idType" value="1"></property>
<!-- 全局的表前缀策略配置 -->
<property name="tablePrefix" value="tbl_"></property>
<!--注入自定义全局操作 // 全局sql配置策略
<property name="sqlInjector" ref="mySqlInjector"></property>
-->
<!-- 注入逻辑删除 -->
<property name="sqlInjector" ref="logicSqlInjector"></property>
<!-- 注入逻辑删除全局值 --> <!--逻辑删除状态-->
<property name="logicDeleteValue" value = "-1"></property>
<property name="logicNotDeleteValue" value="1"></property>
<!-- 注入公共字段填充处理器 -->
<property name="metaObjectHandler" ref="myMetaObjectHandler"></property>
<!-- 注入Oracle主键Sequence -->
<property name="keyGenerator" ref="oracleKeyGenerator"></property>
</bean>
<!-- 定义自定义注入器 --> // 全局sql注入配置
<bean id="mySqlInjector" class="com.myselfdemo.mp.injector.MySqlInjector"></bean>
<!-- 逻辑删除 -->
<bean id="logicSqlInjector" class="com.baomidou.mybatisplus.mapper.LogicSqlInjector"></bean>
<!-- 公共字段填充 处理器 -->
<bean id="myMetaObjectHandler" class="com.myselfdemo.mp.metaObjectHandler.MyMetaObjectHandler"> </bean>
<!-- 配置Oracle主键Sequence -->
<bean id="oracleKeyGenerator" class="com.baomidou.mybatisplus.incrementer.OracleKeyGenerator"></bean>
<!--
配置mybatis 扫描mapper接口的路径
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.myselfdemo.mp.mapper"></property>
</bean>
加入全局接口配置
- 在mapper接口里面添加需要加入的方法
/**
1. <p>
2. Mapper 接口
3. </p>
4. 5. @author weiyunhui
6. @since 2018-06-21
*/
public interface EmployeeMapper extends BaseMapper<Employee> {
int deleteAll();
}
- 创建一个类实现AutoSqlInjector 接口
**
1. 自定义全局操作
*/
public class MySqlInjector extends AutoSqlInjector{
/**
* 扩展inject 方法,完成自定义全局操作
*/
@Override
public void inject(Configuration configuration, MapperBuilderAssistant builderAssistant, Class<?> mapperClass,
Class<?> modelClass, TableInfo table) {
//将EmployeeMapper中定义的deleteAll, 处理成对应的MappedStatement对象,加入到configuration对象中。
//注入的SQL语句
String sql = "delete from " +table.getTableName();
//注入的方法名 一定要与EmployeeMapper接口中的方法名一致
String method = "deleteAll" ;
//构造SqlSource对象
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
//构造一个删除的MappedStatement
this.addDeleteMappedStatement(mapperClass, method, sqlSource);
}
}
然后执行实体对象的deleteAll 方法就可以直接使用
2. 逻辑删除(配置逻辑删除对应的bean)
配置上面相关的配置,然后在实体类的状态字段上面添加@TableLogic注解
实际上是逻辑删除(修改sql语句 查询的时候也会将逻辑删除字段加入到条件里面)
自动填充
根据上面的配置,然后在实体类的字段上面添加注解
自定义一个自动填充器
**
* 自定义公共字段填充处理器
*/
public class MyMetaObjectHandler extends MetaObjectHandler {
/**
* 插入操作 自动填充
*/
@Override
public void insertFill(MetaObject metaObject) {
//获取到需要被填充的字段的值
Object fieldValue = getFieldValByName("name", metaObject);
if(fieldValue == null) {
System.out.println("*******插入操作 满足填充条件*********");
setFieldValByName("name", "wyt", metaObject);
}
}
/**
* 修改操作 自动填充
*/
@Override
public void updateFill(MetaObject metaObject) {
Object fieldValue = getFieldValByName("name", metaObject);
if(fieldValue == null) {
System.out.println("*******修改操作 满足填充条件*********");
setFieldValByName("name", "wyt", metaObject);
}
}
}
oracle 主键sequence
oracle 建表建序列
看上面配置的oracle相关xml中配置