2018开源中国最受欢迎的中国软件
程序员文章站
2022-03-24 22:23:52
2018开源中国最受欢迎的中国软件MyBatis-Plus 什么是MyBatis-Plus? 进入官方第一句话:为简化开发而生 ; 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。 只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。 丰富功能:热加载、代码生成、分页、性能分析 ......
2018开源中国最受欢迎的中国软件mybatis-plus
什么是mybatis-plus?
进入官方第一句话:为简化开发而生 ;
- 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
- 只需简单配置,即可快速进行 crud 操作,从而节省大量时间。
- 丰富功能:热加载、代码生成、分页、性能分析等功能一应俱全。
我愿景是成为 mybatis 最好的搭档,就像 中的 1p、2p,基友搭配,效率翻倍。
特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 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 注入攻击
框架结构
快速入门
全新的 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致力于优化,简化!
上一篇: vue裁剪gif图片并保持动画效果
下一篇: nodejs使用gm制作缩略图和头像裁剪