MyBatisPlus对比MyBatis优点实践

Mybatis-plus官方文档作出说明,仅在原myBatis基础上做出功能增强,性能几乎不受到影响。鉴于此,总结两者明显优缺,做出记录。便于日后学习使用

1、支持ActiveRecord(领域模型模式)

简介:一个模型库对应关系型数据库中的一个表,而模型类的实体只需要继承一个实体,便可对实体进行 常用SQL主键操作。
前提:
在这里插入图片描述
在这里插入图片描述
效果如下所示:
在这里插入图片描述
使用MyBatis-plus后
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、支持自定义模板生成需要的Controller、Service、Mapper

待使用时详述

3、全局修改 SQL执行条件

/**
 * 自定义全局操作
 */
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);
	}
}

4、自带分页插件

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    /**
     * 注册插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        // 添加分页插件
        PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor();
        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求。默认false
        pageInterceptor.setOverflow(false);
        // 单页分页条数限制,默认无限制
        pageInterceptor.setMaxLimit(500L);
        // 设置数据库类型
        pageInterceptor.setDbType(DbType.MYSQL);
        interceptor.addInnerInterceptor(pageInterceptor);

        return interceptor;
    }

}
@Test
    void test02() {
        // 注意:current的值默认是1,从1开始,不是0。size是每一页的条数。
        Page<UserEntity> page = new Page<>(2, 4);
        Page<UserEntity> userPage = userMapper.selectPage(page, null);
        userPage.getRecords().forEach(System.out::println);

        System.out.println("当前页:" + userPage.getCurrent());
        System.out.println("总页数:" + userPage.getPages());
        System.out.println("记录数:" + userPage.getTotal());
        System.out.println("是否有上一页:" + userPage.hasPrevious());
        System.out.println("是否有下一页:" + userPage.hasNext());
    }

5、内置性能分析插件

6、内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作。

7、@TableName(value=“table1”)注解指定表名,@TableId指定表主键,若字段与表中字段名保持一致可不加注解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值