欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2018开源中国最受欢迎的中国软件MyBatis-Plus

程序员文章站 2022-03-24 11:04:36
2018开源中国最受欢迎的中国软件MyBatis Plus 官方网址:https://mp.baomidou.com 中国软件,中文文档 什么是MyBatis Plus? 进入官方第一句话:为简化开发而生 ; 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。 只需简单配置,即可快速进行 ......

2018开源中国最受欢迎的中国软件mybatis-plus

官方网址:https://mp.baomidou.com 中国软件,中文文档

什么是mybatis-plus?

进入官方第一句话:为简化开发而生 ;

  • 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
  • 只需简单配置,即可快速进行 crud 操作,从而节省大量时间。
  • 丰富功能:热加载、代码生成、分页、性能分析等功能一应俱全。

我愿景是成为 mybatis 最好的搭档,就像  中的 1p、2p,基友搭配,效率翻倍。

2018开源中国最受欢迎的中国软件MyBatis-Plus

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 curd,性能基本无损耗,直接面向对象操作
  • 强大的 crud 操作:内置通用 mapper、通用 service,仅仅通过少量配置即可实现单表大部分 crud 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 lambda 形式调用:通过 lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持多种数据库:支持 mysql、mariadb、oracle、db2、h2、hsql、sqlite、postgre、sqlserver2005、sqlserver 等多种数据库
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 id 生成器 - sequence),可*配置,完美解决主键问题
  • 支持 xml 热加载:mapper 对应的 xml 支持热加载,对于简单的 crud 操作,甚至可以无 xml 启动
  • 支持 activerecord 模式:支持 activerecord 形式调用,实体类只需继承 model 类即可进行强大的 crud 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( write once, use anywhere )
  • 支持关键词自动转义:支持数据库关键词(order、key......)自动转义,还可自定义关键词
  • 内置代码生成器:采用代码或者 maven 插件可快速生成 mapper 、 model 、 service 、 controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 mybatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 list 查询
  • 内置性能分析插件:可输出 sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
  • 内置 sql 注入剥离器:支持 sql 注入剥离,有效预防 sql 注入攻击

框架结构

2018开源中国最受欢迎的中国软件MyBatis-Plus

快速入门

全新的 mybatis-plus 3.0 版本基于 jdk8,提供了 lambda 形式的调用,所以安装集成 mp3.0 要求如下:

  • jdk 8+
  • maven or gradle

sql:

#创建数据表
create table tb_user
(
    id int primary key auto_increment comment '主键id',
    name varchar(30) null default null comment '姓名',
    age int(11) null default null comment '年龄',
    email varchar(50) null default null comment '邮箱'
);
#插入测试数据
insert into tb_user (`name`, age, email) values
('jone', 18, 'test1@baomidou.com'),
('jack', 20, 'test2@baomidou.com'),
('tom', 28, 'test3@baomidou.com'),
('sandy', 21, 'test4@baomidou.com'),
('billie', 24, 'test5@baomidou.com');

创建springboot项目导入依赖:

<!--mybatis-plus依赖-->
<dependency>
    <groupid>com.baomidou</groupid>
    <artifactid>mybatis-plus-boot-starter</artifactid>
    <version>3.0.6</version>
</dependency>
<!--简化getset。。方法-->
<dependency>
        <groupid>org.projectlombok</groupid>
        <artifactid>lombok</artifactid>
        <optional>true</optional>
</dependency>
<!--数据库依赖-->
<dependency>
        <groupid>mysql</groupid>
        <artifactid>mysql-connector-java</artifactid>
</dependency>

编辑yml配置:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.driver
    url: jdbc:mysql://localhost:3306/hi?characterencoding=utf8&usessl=false&servertimezone=utc&rewritebatchedstatements=true
    username: root
    password: root

添加mapper接口:

/**
 * mapper接口实现后会有大量已经写好的方法可以直接调用
 * basemapper<user> :指定类型
 * @author simplewu
 */
public interface usermappers extends basemapper<user>{
    
}

启动类添加扫描mapper接口包位置:

@springbootapplication
@mapperscan("com.simple.mybatis.plus.mappers")
public class mybatisplusapplication {
    public static void main(string[] args) {
        springapplication.run(mybatisplusapplication.class, args);
    }
}

测试类进行测试:

@runwith(springrunner.class)
@springboottest
public class mybatisplusapplicationtests {
    
    @autowired
    private usermappers mappers;
    
    @test
    public void selectlist() {
        list<user> list = mappers.selectlist(null);
        list.foreach(system.out::println);
    }

}

分页查询:

@test
public void selectlistpage() {
    //开始页数 每页总数
    ipage<user> page = new page<>(2, 5);
    page = mappers.selectpage(page, null);
    page.getrecords().foreach(system.out::println);
}

当使用mybatis-plus时mapper接口只需要继承basemapper<?>指定类型,在mapper接口中就会发现有许多已经被写好的方法可以直接调用。方法描述请参考源码,国人开发,中文注释。

并且mybatisplus连service都已经帮我们写好了:

首先定义个接口:

public interface userservice extends iservice<user> {
}

实现类:

public class userserviceimpl extends serviceimpl<usermappers, user> implements userservice {

}

我们可以直接注入userservice里面的方法都是能用的。

总结:

mybatisplus致力于优化,简化!