在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

比MyBatis效率快100倍的條件檢索引擎

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-04-04 11:41 ? 次閱讀


1 開源項目簡介

比 MyBatis 效率快 100 倍的條件檢索引擎,天生支持聯表,使一行代碼實現復雜列表檢索成為可能!

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

2 開源協議

使用Apache-2.0開源協議

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

3 界面展示

476356d0-d28f-11ed-bfe3-dac502259ad0.jpg

你的產品給你畫了以上一張圖,還附帶了一些要求:

  • 檢索結果分頁展示
  • 可以按任意字段排序
  • 按檢索條件統計某些字段值

這時候,后臺接口該怎么寫???使用 Mybatis 或 Hibernate 寫 100 行代碼是不是還打不住?而使用 Bean Searcher,只需 一行代碼 便可實現上述要求!!!

4 功能概述

特性
  • 支持 實體多表映射
  • 支持 動態字段運算符
  • 支持 分組聚合 查詢
  • 支持 Select | Where | From 子查詢
  • 支持 實體類嵌入參數
  • 支持 字段轉換器
  • 支持 Sql 攔截器
  • 支持 數據庫 Dialect 擴展
  • 支持 多數據源 與 動態數據源
  • 支持 注解缺省 與 自定義
  • 支持 字段運算符 擴展
  • 等等
快速開發

使用 Bean Searcher 可以極大節省后端的復雜列表檢索接口的開發時間

集成簡單

可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等

擴展性強

面向接口設計,用戶可自定義擴展 Bean Searcher 中的任何組件

支持 注解缺省

約定優于配置,可省略注解,可復用原有域類,同時支持自定義注解

支持 多數據源

分庫分表?在這里特別簡單,告別分庫分表帶來的代碼熵值增高問題

支持 Select 指定字段

同一個實體類,可指定只 Select 其中的某些字段,或排除某些字段

支持 參數過濾器

支持添加多個參數過濾器,可自定義參數過濾規則

支持 字段轉換器

支持添加多個字段轉換器,可自定義數據庫字段到實體類字段的轉換規則

支持 SQL 攔截器

支持添加多個 SQL 攔截器,可自定義 SQL 生成規則

5 技術選型

  • 框架目的:只一行代碼實現:多表聯查分頁搜索任意字段組合過濾任意字段排序多字段統計
  • 架構圖:
476cd9da-d28f-11ed-bfe3-dac502259ad0.png
為什么用

這絕不是一個重復的輪子

雖然 增刪改 是 hibernate 和 mybatis、data-jdbc 等等 ORM 的強項,但查詢,特別是有 多條件、聯表、分頁、排序 的復雜的列表查詢,卻一直是它們的弱項。

傳統的 ORM 很難用較少的代碼實現一個復雜的列表檢索,但 Bean Searcher 卻在這方面下足了功夫,這些復雜的查詢,幾乎只用一行代碼便可以解決。

  • 例如,這樣的一個典型的需求:
4779d55e-d28f-11ed-bfe3-dac502259ad0.png

后端需要寫一個檢索接口,而如果用傳統的 ORM 來寫,代碼之復雜是可以想象的。

而 Bean Searcher 卻可以:

只一行代碼實現以上功能

首先,你有一個實體類:

@SearchBean(tables="useru,roler",joinCond="u.role_id=r.id",autoMapTo="u")

publicclassUser{
privatelongid;
privateStringusername;
privateintstatus;
privateintage;
privateStringgender;
privateDatejoinDate;
privateintroleId;
@DbField("r.name")
privateStringroleName;
//Gettersandsetters...
}

然后你就可以用一行代碼實現這個用戶檢索接口:

@RestController
@RequestMapping("/user")
publicclassUserController{

@Autowired
privateBeanSearcherbeanSearcher;//注入BeanSearcher的檢索器

@GetMapping("/index")
publicSearchResultindex(HttpServletRequestrequest){
//這里只寫一行代碼
returnbeanSearcher.search(User.class,MapUtils.flat(request.getParameterMap()),newString[]{"age"});
}

}

這一行代碼實現了以下功能:

  • 多表聯查
  • 分頁搜索
  • 組合過濾
  • 任意字段排序
  • 字段統計

例如,該接口支持如下請求:

  • GET: /user/index
  • 無參請求(默認分頁):
  • { "dataList": [ { "id": 1, "username": "Jack", "status": 1, "level": 1, "age": 25, "gender": "Male", "joinDate": "2021-10-01" }, ... // 默認返回 15 條數據 ], "totalCount": 100, "summaries": [ 2500 // age 字段統計 ] }
  • GET: /user/index? page=1 & size=10
  • 指定分頁參數
  • GET: /user/index? status=1
  • 返回 status = 1 的用戶
  • GET: /user/index? name=Jac & name-op=sw
  • 返回 name 已 Jac 開頭的用戶
  • GET: /user/index? name=Jack & name-ic=true
  • 返回 name = Jack(忽略大小寫)的用戶
  • GET: /user/index? sort=age & order=desc
  • 按字段 age 降序查詢
  • GET: /user/index? onlySelect=username,age
  • 只檢索 username 與 age 兩個字段:
  • { "dataList": [ { "username": "Jack", "age": 25 }, ... ], "totalCount": 100, "summaries": [ 2500 ] }
  • GET: /user/index? selectExclude=joinDate
  • 檢索時排除 joinDate 字段
參數構建器
Mapparams=MapUtils.builder()
.selectExclude(User::getJoinDate)//排除joinDate字段
.field(User::getStatus,1)//過濾:status=1
.field(User::getName,"Jack").ic()//過濾:name='Jack'(caseignored)
.field(User::getAge,20,30).op(Opetator.Between)//過濾:agebetween20and30
.orderBy(User::getAge,"asc")//排序:年齡,從小到大
.page(0,15)//分頁:第0頁,每頁15條
.build();
Listusers=beanSearcher.searchList(User.class,params);

快速開發

使用 Bean Searcher 可以極大地節省后端的復雜列表檢索接口的開發時間!

  • 普通的復雜列表查詢只需一行代碼
  • 單表檢索可復用原有 Domain,無需定義 SearchBean
集成簡單

可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。

Spring Boot 項目,添加依賴即集成完畢:

implementation'com.ejlchina3.6.0'

接著便可在 Controller 或 Service 里注入檢索器:

/**
*注入Map檢索器,它檢索出來的數據以Map對象呈現
*/
@Autowired
privateMapSearchermapSearcher;

/**
*注入Bean檢索器,它檢索出來的數據以泛型對象呈現
*/
@Autowired
privateBeanSearcherbeanSearcher;

其它框架,使用如下依賴:

implementation'com.ejlchina3.6.0'

然后可以使用 SearcherBuilder 構建一個檢索器:

DataSourcedataSource=...//拿到應用的數據源

//DefaultSqlExecutor也支持多數據源
SqlExecutorsqlExecutor=newDefaultSqlExecutor(dataSource);

//構建Map檢索器
MapSearchermapSearcher=SearcherBuilder.mapSearcher()
.sqlExecutor(sqlExecutor)
.build();

//構建Bean檢索器
BeanSearcherbeanSearcher=SearcherBuilder.beanSearcher()
.sqlExecutor(sqlExecutor)
.build();
擴展性強

面向接口設計,用戶可自定義擴展 Bean Searcher 中的任何組件!

比如你可以:

  • 自定義 FieldOp 來支持更多的字段運算符
  • 自定義 FieldConvertor 來支持任意的 特殊字段類型
  • 自定義 DbMapping 來實現自定義注解,或讓 Bean Searcher 識別其它 ORM 的注解
  • 自定義 ParamResolver 來支持其它形式的檢索參數
  • 自定義 Dialect 來支持更多的數據庫
  • 等等..

6 源碼地址

  • Gitee:https://gitee.com/ejlchina-zhxu/bean-searcher
  • GitHub:https://github.com/ejlchina/bean-searcher


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 轉換器
    +關注

    關注

    27

    文章

    8745

    瀏覽量

    148057
  • 引擎
    +關注

    關注

    1

    文章

    361

    瀏覽量

    22630
  • mybatis
    +關注

    關注

    0

    文章

    62

    瀏覽量

    6745

原文標題:比 MyBatis 效率快 100 倍的條件檢索引擎,天生支持聯表!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于網格技術的并行搜索引擎

    研究現有網格技術和搜索技術,分析并行搜索引擎的優點和不足,提出基于網格技術的并行搜索引擎解決方案,其中包含一個3 層結構的應用框架和一個并行搜索引擎的應用方案。
    發表于 03-30 10:09 ?23次下載

    維、哈、柯全文搜索引擎檢索器的關鍵技術

    研究維、哈、柯全文搜索引擎檢索器的關鍵問題,提出有效的解決方法,包括在用戶計算機沒有安裝本地輸入法和字庫的情況下輸入維、哈、柯文檢索詞并正常顯示搜索結果,針對
    發表于 04-11 09:26 ?14次下載

    問答式信息檢索中模式優化及性能評價

    問答式信息檢索是新一代搜索引擎,集成自然語言處理和信息檢索科學的研究成果,提高信息檢索效率。該文介紹問答式信息
    發表于 04-17 09:29 ?11次下載

    化工搜索引擎索引庫的研究和實現

    本文在對Lucene 全文檢索索引開發包深入研究的基礎上,設計了多索引索引方案,有效地減少了索引時間,提高了
    發表于 12-18 16:27 ?13次下載

    開放源代碼的全文檢索引擎 Lucene

    開放源代碼的全文檢索引擎 Lucene――介紹、系統結構與源碼實現分析 第一節 全文檢索系統與Lucene簡介 一、           &
    發表于 02-10 15:09 ?5次下載

    主題搜索引擎的研究

    介紹了將開源的全文檢索工具包Lucene嵌入到自己的搜索引擎中來滿足開發主題搜索引擎的需求。并基于Lucene中文分詞的不足設計了一個比較完善的中文分詞器,然后將其引入具體應
    發表于 07-05 16:30 ?11次下載

    網絡搜索引擎,網絡搜索引擎的工作原理

    網絡搜索引擎,網絡搜索引擎的工作原理 21 世紀是信息時代,隨著信息科學技術的不斷發展,網絡已成為人們生活中的重要組成部分,網上
    發表于 03-26 15:51 ?1473次閱讀

    垂直搜索引擎是什么_垂直搜索引擎有哪些

    垂直搜索引擎是針對某一個行業的專業搜索引擎,是搜索引擎的細分和延伸,是對網頁庫中的某類專門的信息進行一次整合,定向分字段抽取出需要的數據進行處理后再以某種形式返回給用戶。垂直搜索是相對通用搜
    發表于 01-04 17:19 ?7963次閱讀

    基于Lucene實現全文搜索引擎MYSearch的構建

    Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎
    的頭像 發表于 07-25 08:07 ?2785次閱讀
    基于Lucene實現全文搜<b class='flag-5'>索引擎</b>MYSearch的構建

    阿里云圖像識別速度創紀錄,AWS2.36谷歌5.28

    阿里云圖像識別速度創紀錄,AWS2.36谷歌5.28 12月25日,斯坦福大學發布
    發表于 12-27 12:51 ?250次閱讀

    迫于歐盟壓力,谷歌放寬對搜索引擎競爭對手的競標條件

    在歐盟的壓力下,谷歌再次修改了相關條款,為想要出現在安卓手機上的搜索引擎競爭對手放寬了競標條件
    的頭像 發表于 10-24 16:02 ?2717次閱讀

    新納米級設備晶體管運行速度

    EPFL研究人員已經開發出一種當今最快的晶體管運行速度的器件。新設備的運行速度也目前計算機中的晶體管
    的頭像 發表于 03-28 14:12 ?2457次閱讀

    新型納米器材誕生,晶體管運行速度100

    EPFL研究員開發出了一種現今最快的晶體管運行速度器件,并且新設備在運行速度上也當前計算機中的晶體管
    的頭像 發表于 04-02 11:55 ?2361次閱讀

    2020上半年國內搜索引擎數據出爐,百度斬獲雙第一

    日前,“網速管家”發布2020年7月最新的國內搜索引擎占有率,其中,百度作為多數中國網民優先選擇的搜索引擎,穩居國內搜索引擎排名第一,PC端市場占81.26%,移動端市場占
    的頭像 發表于 08-16 10:10 ?5033次閱讀

    使用Rust語言重寫的代碼搜索引擎黑鳥系統Blackbird正式啟用

    其次,需要完全從頭開始構建了一個新的代碼搜索引擎。新的引擎需要非常(大約是舊代碼搜索速度的兩),功能更強大(支持子字符串查詢、正則表達式和符號搜索),并且理解代碼,將最相關的結果放
    的頭像 發表于 05-11 09:52 ?912次閱讀
    使用Rust語言重寫的代碼搜<b class='flag-5'>索引擎</b>黑鳥系統Blackbird正式啟用
    主站蜘蛛池模板: 久久久免费的精品 | 免费观看视频在线观看 | 欧美天堂视频 | 免费国产成人午夜私人影视 | 欧美性极品hd高清视频 | 97影院理论片手机在线观看 | 五月婷婷电影 | 亚洲禁片 | 天天摸日日添狠狠添婷婷 | 中文字幕 亚洲一区 | 欧美一级视频高清片 | 人人插人人艹 | 久久看免费视频 | 老熟女毛片 | 天天躁夜夜躁狠狠躁躁 | 亚洲精品久久久久久久蜜桃 | 国产精品理论片在线观看 | 亚洲伊人精品综合在合线 | 天天摸天天看 | 国产精品14p| 爆操欧美 | 欧美视频一区二区三区四区 | 久久久久国产精品免费免费不卡 | 啪啪免费网站视频观看 | 好爽好大www视频在线播放 | 美女免费视频色在线观看 | 亚洲乱亚洲乱妇13p 亚洲免费mv | 久久久精品免费观看 | 四虎网址大全 | 99成人在线| 人人添人人澡人人澡人人人爽 | 亚洲国产成人在人网站天堂 | 操操操操网 | 最猛91大神ben与女教师 | 色五五月五月开 | 中国一级做a爰片久久毛片 中韩日欧美电影免费看 | 日韩a毛片免费全部播放完整 | 亚洲国产成人久久一区www | 国产ccc| 美女网站视频色 | 天天爱天天操 |