最近在项目里用到了一个第三方库,叫mybatisplus,是一个mybatis的增强库,简单来说就是增强了mybatis的功能,让mybatis更好用,mybatisplus给的官方定义是Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。http://mp.baomidou.com/#/这是mybatisplus的网站,有兴趣的可以自己看一下.

使用前需要增加maven的以来配置下面就简单说下他具体有哪些好用的功能

com.baomidou
mybatis-plus
2.1.9
com.baomidou
mybatisplus-spring-boot-starter
1.0.5

下面就简单说下他具体有哪些好用的功能.

1.BaseMapper集成单表crud功能

假如有一个实体类User,要使用mybatis实现增删改查需要写很多的xml配置文件来实现,但是用mybatisplus之后直接继承BaseMapper接口即可实现,无需编写任何的xml文件,代码如下

publicinterfaceUserMapperextendsBaseMapper{ }//继承之后即可直接使用BaseMapper中的增删改查方法,例如userMapper.selectById(id); userMapper.deleteById(id); userMapper.updateById(user); userMapper.insert(user);

2.集成分页功能

mybatisplus集成了很好用的分页功能,在执行sql查询的时候,传入一个pagination的对象即可实现自动分页.Pagination对象中主要的成员变量如下:

/**
* 总数
*/privateinttotal;/**
* 每页显示条数,默认 10
*/privateintsize=10;/**
* 总页数
*/privateintpages;/**
* 当前页
*/privateintcurrent =1;/**
* 查询总记录数(默认 true)
*/privatebooleansearchCount =true;/**
* 开启排序(默认 true) 只在代码逻辑判断 并不截取sql分析
*
* @see com.baomidou.mybatisplus.mapper.SqlHelper#fillWrapper
**/privatebooleanopenSort =true;/**
* 优化 Count Sql 设置 false 执行 select count(1) from (listSql)
*/privatebooleanoptimizeCountSql =true;/**
*
* SQL 排序 ASC 集合
*
*/privateList ascs;/**
*
* SQL 排序 DESC 集合
*
*/privateList descs;/**
* 是否为升序 ASC( 默认: true )
*
* @see #ascs
* @see #descs
*/privatebooleanisAsc =true;/**
*
* SQL 排序 ORDER BY 字段,例如: id DESC(根据id倒序查询)
*
*
* DESC 表示按倒序排序(即:从大到小排序)
* ASC 表示按正序排序(即:从小到大排序)
*
* @see #ascs
* @see #descs
*
*/privateString orderByField;

对这些成员变量例如isAsc赋值,即可实现想要的分页功能.

另外pagination是RowBounds的子类,如果你想要一个自定义的分页方式,可以继承RowBounds类并重写对应的方法即可实现,这里就不详细说明了.

3.条件构造器实现复杂的sql查询

这个功能主要用户实现动态的sql拼接,主要用到的对象是EntityWrapper,通过生成一个EntityWrapper对象,然后通过该wrapper对象的方法实现sql的拼接.例如可以wrapper的eq方法实现sql中的=功能,like方法实现sql中的like功能,gt方法实现sql的>

功能等等等等,这块大家可以自己看下wrapper中的方法就可以了,非常简单,拿来即可用.

4.代码自动生成

mybatis generator不知道大家有没有用过,就是更加表结构自动生成实体类和mapper及xml配置文件,mybatisplus在这个基础上提供了更强大的代码自动生成功能,示例代码如下

privatevoidgenerateByTables(StringpackageName,String... tableNames) { GlobalConfig globalConfig =newGlobalConfig(); globalConfig.setActiveRecord(false)
.setEnableCache(false)
.setBaseColumnList(true)
.setBaseResultMap(true)
.setAuthor("administrator")
.setOutputDir(baseProjectPath)
.setFileOverride(true)
.setServiceName("%sService")
.setControllerName("Con")
.setActiveRecord(false)
.setFileOverride(true);
DataSourceConfig dataSourceConfig =newDataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL).setUrl(URL) .setUsername(USERNAME)
.setPassword(PASSWORD)
.setDriverName(DRIVER_NAME);
StrategyConfig strategyConfig =newStrategyConfig(); strategyConfig.setEntityBuilderModel(false)
.setCapitalMode(false)
.setEntityLombokModel(true)
.setDbColumnUnderline(true) .setNaming(NamingStrategy.underline_to_camel) .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
PackageConfig packageConfig =newPackageConfig() .setParent(packageName)
.setEntity("model.mybatis")
.setMapper("dao")
.setXml("../../../../../mapper");
TemplateConfig templateConfig =newTemplateConfig();
templateConfig
.setController(null)
.setService(null)
.setServiceImpl(null);newAutoGenerator()
.setGlobalConfig(globalConfig)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig)
.setTemplate(templateConfig)
.execute(); }

其中packagename为你需要生成代码的包地址,tables是表名

以上就是mybatisplus常用的功能,最后给大家推荐一个好用的mybaitsplus在idea里的插件, 可以通过idea的File -> Settings -> Plugins -> Browse Repositories..输入 mybatisx 安装下载,能够 很好的提升mybatisplus的开发体验.

写在最后:欢迎留言讨论,加关注,持续更新!!!

开发六年mybatisplus使用小结的更多相关文章

  1. 记账本微信小程序开发六

    记账本微信小程序开发六 我的界面 主界面

  2. OCulus Rift 游戏开发六原则

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...

  3. 从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用

    标题:从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用. 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/1171 ...

  4. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  5. Java Web 开发中路径相关问题小结

    Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 Eclipse中目录结构如图2所示: 图2 那么针对这个站点的几个基本概 ...

  6. Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结

    最近公司要开发android 所以研究了一下Xamarin  to android 中个GPS 废话不多说,说重点. 想获取手机上的gps信息必不可少的就是要使用 LocationManager Lo ...

  7. 升级设置win2008r2开发环境,遇到问题小结

    升级设置2008r2开发环境,是一般程序员经历的事情.许多从vs 2003,vs2005+sql2000+win2003过来,但是,时间推移,技术革新,64位的推行.架构的变化和强大.我们也只可以学习 ...

  8. Android 音视频开发(六): MediaCodec API 详解

    在学习了Android 音视频的基本的相关知识,并整理了相关的API之后,我们应该对基本的音视频有一定的轮廓了. 下面开始接触一个Android音视频中相当重要的一个API: MediaCodec.通 ...

  9. Java微信公众平台开发(六)--微信开发中的token获取

    转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...

随机推荐

  1. CentOS7下搭建zabbix监控(五)——Web端配置自动发现并注册

    好像有点问题,没法自动添加主机,我后期再测测 (1).自动发现主机并注册 1)创建发现规则 2)编辑自动发现规则信息(这两步不配置问题也不大,因为在动作中也有主机IP地址) 3)添加自动发现的动作 4 ...

  2. 123457123457---com.threeapp.ShuiShiYanLiWang01----谁是眼力王

    com.threeapp.ShuiShiYanLiWang01----谁是眼力王

  3. Python - Django - 作者表多对多关联书籍表

    models.py 代码: from django.db import models # Create your models here. # 出版社 class Publisher(models.M ...

  4. iOS通知注意点

    之前以为控制器发送通知,只有你满足:1>注册接收通知:2>进入本页面才能接收到值. 今天朋友问了一个问题: 他的逻辑如下: 退出登录发送通知,需要好几个界面会收到通知,然后这几个界面进行网 ...

  5. QuickText for Notepad++

    昨刚投入新欢Notepad++,思路如泉涌,码代码也不累了,一口气用她码了两篇文- 今再接再厉,继续.QuickText严格说来算不上什么神器级插件,也仅只是一个缩写快捷输入的插件而已.可用得好,那效 ...

  6. iOS-UIView的layoutSubviews和drawRect方法何时调用(转)

    转自:http://jianyu996.blog.163.com/blog/static/112114555201305113018814/ 首先两个方法都是异步执行.layoutSubviews方便 ...

  7. KMeans聚类

    常用的聚类方法: ①分裂方法: K-Means算法(K-平均).K-MEDOIDS算法(K-中心点).CLARANS算法(基于选择的算法) ②层次分析方法: BIRCH算法(平衡迭代规约和聚类).CU ...

  8. php5.6安装及php-fpm优化配置

    1,安装依赖包: yum install -y gcc gcc-c++  zlib zlib-devel pcre pcre-devel  gd libjpeg libjpeg-devel libpn ...

  9. Java程序的编写与执行、Java新手常见问题及解决方法|乐字节Java学习

    今天,我们来写一段Java程序.然后看看Java程序是如何执行的,以及Java新手小白遇到的问题和解决办法.   一.HelloWorld的编写 ① 新建一个XXX.java (文件的扩展名显示出来) ...

  10. vue+element-ui动态生成多级表头,并且将有相同字段下不同子元素合并为同一个

    element表头要多层生成,下一级表头数据源必须是当前表头的子一级,这样一层一层嵌套可以生成多层表头: 要把数据处理成这种类型的数据 var arr = []; for (var key in ob ...