范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

开源比MyBatis效率快100倍的条件检索引擎,天生支持联表

  一、开源项目简介
  比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表,使一行代码实现复杂列表检索成为可能!二、开源协议
  使用Apache-2.0开源协议三、界面展示
  你的产品给你画了以上一张图,还附带了一些要求:检索结果分页展示可以按任意字段排序按检索条件统计某些字段值
  这时候,后台接口该怎么写???使用 Mybatis 或 Hibernate 写 100 行代码是不是还打不住?而使用 Bean Searcher,只需 一行代码 便可实现上述要求!!!四、功能概述  特性支持  实体多表映射 支持  动态字段运算符 支持  分组聚合 查询 支持  Select | Where | From 子查询 支持  实体类嵌入参数 支持  字段转换器 支持  Sql 拦截器 支持  数据库 Dialect 扩展 支持  多数据源 与 动态数据源 支持  注解缺省 与 自定义 支持  字段运算符 扩展 等等 快速开发
  使用 Bean Searcher 可以极大节省后端的复杂列表检索接口的开发时间 集成简单
  可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等 扩展性强
  面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件 支持 注解缺省
  约定优于配置,可省略注解,可复用原有域类,同时支持自定义注解 支持 多数据源
  分库分表?在这里特别简单,告别分库分表带来的代码熵值增高问题 支持 Select 指定字段
  同一个实体类,可指定只 Select 其中的某些字段,或排除某些字段 支持 参数过滤器
  支持添加多个参数过滤器,可自定义参数过滤规则 支持 字段转换器
  支持添加多个字段转换器,可自定义数据库字段到实体类字段的转换规则 支持 SQL 拦截器
  支持添加多个 SQL 拦截器,可自定义 SQL 生成规则 五、技术选型框架目的:只一行代码实现: 多表联查分页搜索任意字段组合过滤任意字段排序多字段统计 架构图:
  ⁉ 为什么用这绝不是一个重复的轮子
  虽然  增删改  是 hibernate 和 mybatis、data-jdbc 等等 ORM 的强项,但查询,特别是有  多条件 、 联表 、 分页 、 排序  的复杂的列表查询,却一直是它们的弱项。
  传统的 ORM 很难用较少的代码实现一个复杂的列表检索,但 Bean Searcher 却在这方面下足了功夫,这些复杂的查询,几乎只用一行代码便可以解决。 例如,这样的一个典型的需求:
  后端需要写一个检索接口,而如果用传统的 ORM 来写,代码之复杂是可以想象的。
  而 Bean Searcher 却可以:  只一行代码实现以上功能
  首先,你有一个实体类: @SearchBean(tables="user u, role r", joinCond="u.role_id = r.id", autoMapTo="u") public class User {   private long id;   private String username;   private int status;   private int age;   private String gender;   private Date joinDate;   private int roleId;   @DbField("r.name")   private String roleName;   // Getters and setters... }
  然后你就可以用一行代码实现这个用户检索接口: @RestController @RequestMapping("/user") public class UserController {      @Autowired     private BeanSearcher beanSearcher;              // 注入 BeanSearcher 的检索器      @GetMapping("/index")     public SearchResult index(HttpServletRequest request) {         // 这里只写一行代码         return beanSearcher.search(User.class, MapUtils.flat(request.getParameterMap()), new String[]{ "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   字段  参数构建器Map params = MapUtils.builder()         .selectExclude(User::getJoinDate)                 // 排除 joinDate 字段         .field(User::getStatus, 1)                        // 过滤:status = 1         .field(User::getName, "Jack").ic()                // 过滤:name = "Jack" (case ignored)         .field(User::getAge, 20, 30).op(Opetator.Between) // 过滤:age between 20 and 30         .orderBy(User::getAge, "asc")                     // 排序:年龄,从小到大         .page(0, 15)                                      // 分页:第 0 页, 每页 15 条         .build(); List users = beanSearcher.searchList(User.class, params);
  快速开发
  使用 Bean Searcher 可以极大地节省后端的复杂列表检索接口的开发时间! 普通的复杂列表查询只需一行代码 单表检索可复用原有  Domain  ,无需定义 SearchBean   集成简单
  可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。 Spring Boot 项目,添加依赖即集成完毕:implementation "com.ejlchina:bean-searcher-boot-stater:3.6.0"
  接着便可在  Controller   或 Service   里注入检索器:/**  * 注入 Map 检索器,它检索出来的数据以 Map 对象呈现  */ @Autowired private MapSearcher mapSearcher;  /**  * 注入 Bean 检索器,它检索出来的数据以 泛型 对象呈现  */ @Autowired private BeanSearcher beanSearcher;其它框架,使用如下依赖:implementation "com.ejlchina:bean-searcher:3.6.0"
  然后可以使用  SearcherBuilder   构建一个检索器:DataSource dataSource = ...     // 拿到应用的数据源  // DefaultSqlExecutor 也支持多数据源 SqlExecutor sqlExecutor = new DefaultSqlExecutor(dataSource);  // 构建 Map 检索器 MapSearcher mapSearcher = SearcherBuilder.mapSearcher()         .sqlExecutor(sqlExecutor)         .build();  // 构建 Bean 检索器 BeanSearcher beanSearcher = SearcherBuilder.beanSearcher()         .sqlExecutor(sqlExecutor)         .build(); 扩展性强
  面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件!
  比如你可以: 自定义  FieldOp   来支持更多的字段运算符自定义  FieldConvertor   来支持任意的 特殊字段类型自定义  DbMapping   来实现自定义注解,或让 Bean Searcher 识别其它 ORM 的注解自定义  ParamResolver   来支持其它形式的检索参数自定义  Dialect   来支持更多的数据库等等.. 六、源码地址
  访问一飞开源:https://code.exmay.com/

小三峡发现神奇悬棺,猴子都爬不上去,古人到底是怎么做到的?提到三峡,应该无人不知无人不晓吧。作为重庆的十大文化符号之一,长江三峡全长193千米,沿途两岸奇峰陡立峭壁对峙。长江三峡夔门更是第五套人民币10元纸币背面的风景图案。之所以叫做三峡吃没熟的螃蟹会感染寄生虫吗螃蟹是生活中比较常见的一种食物,它吃起来味道很不错,营养价值高,适量食用对身体有一定的好处,很多人都喜欢吃螃蟹。螃蟹要吃熟透的,没熟的螃蟹很可能会含有细菌和寄生虫,吃了时候可能会容软化血管坑了国人30年!什么红酒洋葱黑木耳,都是瞎扯谣零零计划健康科普大赛参考资料1DonaldM,StephenSidney。TheCoronaryArteryRiskDevelopmentInYoungAdults(CARDIA健脾先放屁,养肺先养胃,疏肝先流泪,4个中成药,帮你解决大家好,我是刘医生。不知道你有没有听过这句话健脾先放屁养肺先养胃疏肝先流泪,为什么有这样的说法呢?今天,刘医生就来给你讲一讲。首先第一个健脾先放屁,脾主要是用来运化和消化食物的,如俗语秋后做背,人活百岁,是什么意思?秋天该如何养背?人体经过了一个长夏,体内聚集了众多的寒湿毒素和浊气,秋天正好是一个排出的最佳时机,所以生活当中会有秋后养背,人活百岁的说法。其实养贝就等同于养五脏六腑,在这个过程当中调理人体的心脏1。29亿,郜林售出豪宅!完美吃下金元足球红利,一套房抵整支国足今年7月,多位网红中介在网上发布了郜林豪宅的视频,标价1。45亿元出售。经过3个月的等待,郜林终于在近日以1。29亿元的价格将自己的豪宅成功售出了。现年36岁的郜林,可谓是完整吃下振奋人心!缅甸医生成功实施一例新生婴儿肠道外挂手术1hr一名刚出生时,肠道长在体外的新生婴儿,在斯伞吞人民医院,被成功实施手术2022年10月18日2hr据缅甸宣传部发布的消息获悉,针对一名刚出生时,肠道长在体外的新生婴儿,斯伞吞所谓的养生,不过是顺应自然我的养生心得当我看了一些中医讲座以后,才接触到养生这个词语。所谓的养生就是保养生命,身体是生命的形体,所以保养生命就是保养身体。说起养生,不得不说黄帝内经。黄帝内经中有这样一段话上五百年来国家间的博弈,危机循环往复,人类推动着看不见的手在过去的500年间,世界平均每10年就爆发一次大的危机。历次泡沫(金融泡沫股市泡沫楼市泡沫)与危机的呈现形式虽然各不相同,如战争瘟疫货币科技地缘政治全球化国际秩序市场等,但它们犹如体验过泰式按摩服务后,过程令人痛苦求饶,但结束后神清气爽随着中国经济的发展,如今人们的生活越来越好,闲暇之余,人们也更愿意出门去走一走看一看,去丰富一下自己的眼界,所以出国旅游市场非常的火爆。(此处已添加小程序,请到今日头条客户端查看)1年1300万!湖人这钱白花了?詹姆斯进攻变化大,一人意外之喜2122赛季。史蒂芬库里在面对湖人的3场比赛里场均贡献25。0分6。3篮板6。3助攻。2555,标准的球星数据。说实话,库里打出这样的数据,我不感到奇怪。一方面,作为联盟的顶级巨星
关于林书豪的10件事林疯狂林书豪(JeremyLin)在2023年宣布加盟台湾职篮联盟P。LEAGUE的高雄钢铁人队,引起全球球迷关注。优异的球技和控场,以及总是能与队友合作无间的眼力和球商,都是他备202312双NikeAirForce女孩专属设计鞋款!气质仙女们必备风格,绝对是穿搭的好伙伴!特色内容3款NikeAirForce女孩经典搭配3款街头流行NikeAirForce女孩穿搭3款复古潮风NikeAirForce女推荐3款梦幻少女Nike美人图集程潇程潇一身玫红色泳装大秀好身材。前tu后翘,皮肤白xi有光泽,果然还是年轻好啊!看来程潇当天的心情还是很不错的呢,坐在无边泳池旁边开心比耶拍照,满脸笑容,尽情展示好身材。距离更近一点超模AA还是靓,毫无赘肉,小碎蓝燃烧整个沙滩据每日邮报4月6日消息,周三下午,在巴西弗洛里亚诺波利斯海滩上,亚历山德拉安布罗西奥(AlessandraAmbrosio,AA)展现了令人羡慕的健美身材。这位巴西模特穿着蓝色碎花李凯尔是谁?李凯尔英文名凯尔科尔文安德森(英语KyleFormanAnderson,1993年9月20日),出生于纽约州纽约市,是一名美国职业篮球运动员,目前效力于NBA联盟的明尼苏达森林狼。疯狂一夜!2位主教练下课,湖人达成2签1裁,西部对阵全部出炉北京时间4月10日,NBA常规赛迎来收官战,30支球队全都亮相,且都是在凌晨打响。这也让NBA迎来疯狂一夜,除了精彩的比赛,场外也有很多消息,其中2位主教练正式下课,来自火箭和活塞专访国安主帅斯坦利新工体揭幕战肯定是无与伦比的经历记者刘翔宇报道还有一周时间,北京国安就将在新工体迎来新赛季中超的揭幕战。上周末,国安和南通支云进行了热身赛。从本场来看,斯坦利的战术很明确,国安新赛季将主打433,热身赛中的首发基如何看待附加赛打森林狼?詹姆斯就是下一场打森林狼仅此而已直播吧4月10日讯NBA常规赛收官战,湖人128117击败爵士。赛后詹姆斯接受了采访。谈到自己如何看待湖人将在附加赛对阵森林狼时,詹姆斯说道就是下一场打森林狼,仅此而已。(That苍井空41岁生日狂欢,白皙紧致肌肤如少女随着时间的推移,人们的身体会逐渐老化,皮肤也会失去年轻时的光彩,但是有些人似乎能够在岁月中保持年轻的容颜。其中一位就是日本女星苍井空。近日,苍井空庆祝了自己的41岁生日,她在酒吧里畸形的美贵族束腰堪比我国古代的缠足从少女时期开始,她们就会穿上一些用钢条制作的腰带,以X形束缚住腰部。她们会在在布料之中会放置一些螺旋钢条,然后将后面的钢条勒紧,用这样的方式来帮助女性束缚腰腹部,这样在穿上较为宽大为什么过了18岁还在长痘?试试安抚肌肤的方法护肤分享为什么过了18岁?你还在长痘?最近门诊有个患者说,他都287过了青春期为什么还长痘痘呢?后来一问就知道,他去过很多的祛痘机构,尤其是用过一些偏方,来治疗这个痘痘。脸上除了满脸的痘痘