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

干掉XMLMapper,新出的FluentMybatis真香

  使用fluent mybatis可以不用写具体的xml文件,通过java api可以构造出比较复杂的业务sql语句,做到代码逻辑和sql逻辑的合一。
  不再需要在Dao中组装查询或更新操作,在xml或mapper中再组装参数。
  那对比原生Mybatis, Mybatis Plus或者其他框架,FluentMybatis提供了哪些便利呢?  需求场景设置
  我们通过一个比较典型的业务需求来具体实现和对比下,假如有学生成绩表结构如下:
  现在有需求:
  统计2000年三门学科("英语", "数学", "语文")及格分数按学期,学科统计最低分,最高分和平均分, 且样本数需要大于1条,统计结果按学期和学科排序
  我们可以写SQL语句如下
  那上面的需求,分别用fluent mybatis, 原生mybatis 和 Mybatis plus来实现一番。  三者实现对比使用fluent mybatis 来实现上面的功能
  具体代码:
  https://gitee.com/fluent-mybatis/fluent-mybatis-docs/tree/master/spring-boot-demo/
  我们可以看到fluent api的能力,以及IDE对代码的渲染效果。  换成mybatis原生实现效果
  1.定义Mapper接口  public interface MyStudentScoreMapper {     List> summaryScore(SummaryQuery paras); }
  2.定义接口需要用到的参数实体 SummaryQuery
  3.定义实现业务逻辑的mapper xml文件  
  4.实现业务接口(这里是测试类, 实际应用中应该对应Dao类)
  总之,直接使用mybatis,实现步骤还是相当的繁琐,效率太低。换成mybatis plus的效果怎样呢?  换成mybatis plus实现效果
  mybatis plus的实现比mybatis会简单比较多,实现效果如下
  如红框圈出的,写mybatis plus实现用到了比较多字符串的硬编码(可以用Entity的get lambda方法部分代替字符串编码)。
  字符串的硬编码,会给开发同学造成不小的使用门槛,个人觉得主要有2点:  字段名称的记忆和敲码困难 Entity属性跟随数据库字段发生变更后的运行时错误
  其他框架,比如TkMybatis在封装和易用性上比mybatis plus要弱,就不再比较了。  生成代码编码比较fluent mybatis生成代码设置public class AppEntityGenerator {     static final String url = "jdbc:mysql://localhost:3306/fluent_mybatis_demo?useSSL=false&useUnicode=true&characterEncoding=utf-8";      public static void main(String[] args) {         FileGenerator.build(Abc.class);     }      @Tables(         /** 数据库连接信息 **/         url = url, username = "root", password = "password",         /** Entity类parent package路径 **/         basePack = "cn.org.fluent.mybatis.springboot.demo",         /** Entity代码源目录 **/         srcDir = "spring-boot-demo/src/main/java",         /** Dao代码源目录 **/         daoDir = "spring-boot-demo/src/main/java",         /** 如果表定义记录创建,记录修改,逻辑删除字段 **/         gmtCreated = "gmt_create", gmtModified = "gmt_modified", logicDeleted = "is_deleted",         /** 需要生成文件的表 ( 表名称:对应的Entity名称 ) **/         tables = @Table(value = {"student_score"})     )     static class Abc {     } } mybatis plus代码生成设置public class CodeGenerator {      static String dbUrl = "jdbc:mysql://localhost:3306/fluent_mybatis_demo?useSSL=false&useUnicode=true&characterEncoding=utf-8";      @Test     public void generateCode() {         GlobalConfig config = new GlobalConfig();         DataSourceConfig dataSourceConfig = new DataSourceConfig();         dataSourceConfig.setDbType(DbType.MYSQL)             .setUrl(dbUrl)             .setUsername("root")             .setPassword("password")             .setDriverName(Driver.class.getName());         StrategyConfig strategyConfig = new StrategyConfig();         strategyConfig             .setCapitalMode(true)             .setEntityLombokModel(false)             .setNaming(NamingStrategy.underline_to_camel)             .setColumnNaming(NamingStrategy.underline_to_camel)             .setEntityTableFieldAnnotationEnable(true)             .setFieldPrefix(new String[]{"test_"})             .setInclude(new String[]{"student_score"})             .setLogicDeleteFieldName("is_deleted")             .setTableFillList(Arrays.asList(                 new TableFill("gmt_create", FieldFill.INSERT),                 new TableFill("gmt_modified", FieldFill.INSERT_UPDATE)));          config             .setActiveRecord(false)             .setIdType(IdType.AUTO)             .setOutputDir(System.getProperty("user.dir") + "/src/main/java/")             .setFileOverride(true);          new AutoGenerator().setGlobalConfig(config)             .setDataSource(dataSourceConfig)             .setStrategy(strategyConfig)             .setPackageInfo(                 new PackageConfig()                     .setParent("com.mp.demo")                     .setController("controller")                     .setEntity("entity")             ).execute();     } } FluentMybatis特性一览
  三者对比总结
  看完3个框架对同一个功能点的实现, 各位看官肯定会有自己的判断,笔者这里也总结了一份比较。
  来源:https://juejin.cn/post/6886019929519177735

观察丨从两万元的机器狗到逼真的虚拟人,赛博空间来了?大众网海报新闻记者孙蕊报道2021年3月30日,蔚蓝科技发布第五代阿尔法机器狗,据称这只价值2万块的机械狗行走速度可以达到每秒4。15米,打破了当前该领域的世界纪录。同时,它采用了骁龙888Plus6400万长焦,5999元,开卖5天飙升至热卖榜第二名好多消费者在购买手机之前,喜欢根据各大品牌手机的热销程度来作为手机是否值得购买的依据,而依据的来源就是京东发布的手机热卖榜。有这么一款手机,在开卖之后仅仅5天的时间,就飙升至京东手非洲之王传音控股,十年铸一剑,手机业务,新兴市场大有可为(报告出品方分析师光大证券研究所刘凯,本报告pdf版获取方式见文末)十五年耕耘非洲手机市场,传音控股经过多年的积累和发展,在全球主要新兴市场已取得了领先的市场地位及广泛的品牌影响力华为为何坚持不上市?我算是华为的铁杆粉丝!谁说华为不想上市?当年华为想上市的时候,是谁说华为不是高科技公司,不允许上市的?华为是在被逼无奈的时候想起了募集自己的工人的钱从而发展自己的!所以说啊,我们可一分钟资讯华为小米苹果OPPO微软三星,最新消息哈喽,我是毛小毛。关注我,每日带你了解最新数码资讯!一分钟资讯第116期,感谢你的阅读。华为Mate40Pro九天之上定制版推出近日,奢侈定制品牌Caviar为庆祝我国探月工程载人三星GalaxyS21FE出现在GooglePlay控制台除了GalaxyZFold3和GalaxyZFlip3之外,GalaxyS21FE也可能是今年三星最受欢迎的设备之一。这台次旗舰的设计理念是如同能用更便宜的价格买到旗舰Galaxy华为nova9系列已入网,又是全系4G,但有HarmonyOS2。1加持华为nova8系列于2020年12月23日发布,所以按照经验,华为也将于2021年12月份左右发布新款的华为nova9系列手机,对于这款青春机型,还是很多花粉关注的,而根据最新消息沃尔沃安全,安全,还是安全提到沃尔沃你首先会想到什么,我第一个想起来的标签就是安全。这个来自北欧的汽车品牌多年来在燃油车领域积累了大量的经验,尤其是在安全领域更是独树一帜,随着汽车行业发展进入到了新能源时代都是扩展SSD,PS5和XSX走了完全不同的路最近,索尼解锁了一个被广泛期待的功能用户即将能够根据自己的需求向PS5系统内添加M。2SSD。虽然这个功能目前还只限于Beta用户,但是相信不久的将来就可以对所有用户开放。现在,先资本市场融来的55亿,又能让极狐续命多久呢?近年来,随着节能减排政策日益严苛,新能源汽车再次成为市场的宠儿,特斯拉比亚迪的市场份额明显迅速扩大,成为新能源市场巨头。而五菱宏光MINI上市后第二个月,销量就飙升至2万辆以上,并号称比造原子弹还难,荷兰技术顶峰光刻机,中国何时能独立制造?单机成本可高达1。2亿美元的激光光刻机是芯片制造和量产的重要装备,也是我国制造高端芯片道路上最大的障碍。美国对华为实施制裁的正式文件颁发快一年了,自2020年9月15日之后,台积电
快30岁了,买个iPadPro还会纠结,可耻吗?我的观点不可耻!人一辈子会经历不同的阶段,青春而立不惑知天命等等,每个阶段都有其不同的特点和魅力,刚毕业工作的时候,二十几岁的自己赚钱,一个月拿个四五千,交了五险一金就剩下四千多,苹果手机跌落神坛,乌俄风波一波未平,一波又起苹果和谷歌等美国科技公司关闭了在俄国的服务,由于这两家公司在手机支付端的广泛使用,目前俄罗斯多地的公共交通因此出现了巨大的问题人们发现自己刷不进地铁和公交了。苹果公司的獠牙逐渐张开可拆电池手机上线,能充AirPods的万能充复活,网友感谢诺基亚今天又是被机友惊到的一天。翻看私信发现,曾经的机圈老大哥诺基亚又搞事情了,不仅复活1GB内存和FWVGA屏幕(分辨率854480),还推出极为先进的可拆卸电池新机!1GB内存和FWvivo回应撤销NEX事业部,由旗舰产品X系列来承载!你怎么看?vivo回应撤销NEX事业部,由旗舰产品X系列来承载!你怎么看?就在昨天,vivo副总兼产品总经理贾敬东正式做出回应,vivo的NEX将由X系列来继承,这算是默认vivo砍掉NEX人像摄影师要把手里的佳能单反换成索尼微单吗?你怎么看?为什么现在有些人卖掉了佳能5d3去换索尼的单反?我是一个佳能的用户,我也曾经是一个索尼微单的用户。我经历了从佳能换到索尼微单,换门富士微单,又重新回到佳能单反的历程。这里可以分享一小话NFT之二从链游看NFT的成长史从公链时代开启之时,链游一直被寄予众望,几乎所有公链都曾将链游作为其重点扶持对象。不过在其发展过程中我们依然看到了诸多有待攻克的问题。今天,NFT市场已经逐渐繁荣,layer2时代3月新机预告K50ProiPhoneSE3GTNeo3Magic4vivoX80转眼间就到3月份了,一起来看看接下来会有哪些新机发布吧!一RedmiK50Pro以及K50ProRedmiK50Pro首发搭载联发科天玑8100处理器,跑分在80万左右,和高通旗舰变天了,新能源年销量要突破500万辆!传统车企该如何反击?中国纯电动车市场的形成从1885年卡尔本茨发明内燃机汽车算起,内燃机花了整整30年才终于替代电机与电池,一跃成为机动车的最主要动力总成。日本在20世纪40年代末开始研发新的电动车型12256GB大容量,从3399跌至1999元,骁龙888旗舰开始沦为千元机虽然说骁龙870有着更低的功耗表现,发热不大,而骁龙888发热较为严重,但是大家也都看到了,去年的高端旗舰机,基本都是采用骁龙888或者骁龙888Plus。虽然实际体验拉跨,但是8TiktokShop平台TIKTOKShop平台,如何使用跨境电商直播专线部署印尼英国节点的TIKTOKShop首先我们先了解下,TikTokShopTikTokShop是TikTok官方推出的电商工具平安装了系统后,你都是用什么激活的?关于WIN10系统的数字权利激活其实小帮在去年5月份就给大家分享过一款激活工具HWIDGen,时隔1年尽管老版本的软件还能用,但有些使用上的细节问题没有说清楚,再加上已经更新迭代了