開發六年mybatisplus使用小結


最近在項目里用到了一個第三方庫,叫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的開發體驗.

寫在最后:歡迎留言討論,加關注,持續更新!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM