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

springcloud里有关mybatis踩过的坑

  springcloud里有关mybatis踩过的坑前言
  java是进行应用开发非常好的一门语言,有很多成熟的开发框架。
  springcloud是java语言实现微服务的最好的框架和微服务化的实践,很多中小厂都是使用springcloud来实现微服务的体系, 而mybatis作为这个解决方案中object mapping组件也是非常成熟的一种选择, 今天这个文章就来拆一拆,在mybatis和springcloud/springboot集成中遇到过的一些坑。
  依赖包的引用
  要做到autoconfiguration,自动去扫描Objec Map的classes文件和xml文件;必须引用 mybatis-spring-boot-starter, 否则不能扫描生效。可以用 mybatis-plus 的 mybatis-plus-boot-starter 替代。 (当然如果不是通过autoconfiguration的方式,自己去写starter或者通过显示API调用的方式的话除外。)
               com.baomidou             mybatis-plus-boot-starter         
  @MapperScan 的原罪
  有关MapperScan支持多个包的问题,网上大部分说是通过 basePackage 指定扫描多个包,本身没问题,但不是一个完美的方案。原因如下:
  (1)如果扫描的包名是一个较顶级的,那么,一些不是 mapper 的 interface 也会被处理成 mapper 而被创建成一个 spring bean,造成系统无法启动。
  (2)缩小包的范围,最好是只配置 mapper 对应包,但如果把所有包含 mapper 的包罗列出来, 列表变得比较长,列表虽然可以用通配符解决一部分问题,但需要包包满足一些统一的规则。 同时,对于层级不同的情况,根本还是不能处理。
  (3)mapscan写在了@SpringBootApplication这个入口主main类上,降低了扩展性,每增加或调整 mapper 包,都要到 @MapperScan 中去注册。业务代码的变更影响了框架性的代码。尤其是对于多模块的情况,这个问题更加的不好控制。 违背依赖的原则,本来框架不依赖业务,现在变成了框架反过来要因业务变化而调整代码。
  如何来解决这个问题, 我在写db-spring-boot-starter这个微服务的底层子框架的时候,选择的方式是:
  在 @MapperScan 中,使用 basePackage + annotationClass 组件解决问题。 所有的 mapper 上加上 @Mapper 注解。这是合理的,因为本身 mapper 属于一类特殊的接口,理应该要通过特殊注册进行区分。有了第1条,basePackage 就可以指定一个较顶级的包名了
  通过上面两条,一方面解决了 mapper 包动态变化的问题,
  因为业务上的代码一般会有一个统一的包前缀,典型的如 com.companyname, 那么就可以把它作为 basePackage,只需要配置一次,后面的变化都不受影响。
  import org.apache.ibatis.annotations.Mapper;  @Mapper public interface CityDao extends BaseMapper {  }
  ##### mybatis-plus配置 #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断" mybatis-plus.global-config.db-config.field-strategy=NOT_NULL #逻辑删除配置 mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0 # 原生配置 mybatis-plus.configuration.map-underscore-to-camel-case=true mybatis-plus.configuration.cache-enabled=false mybatis-plus.mapper-locations=classpath:/mapper/*Mapper.xml mybatis-plus.typeAliasesPackage=${mapper.entity.path:com.joinsunsoft.**.model.entity}
  分页的问题
  关于mybatis的分页,目前有两个主流派系,一个是使用mybatis的pagehelper,pagehelper实现了一个mybatis的拦截器,在执行mybatis的query时,会使用拦截器的方式来加入分页的代码和处理。 另一个派系,是使用mybatisplus的PaginationInnerInterceptor来实现。 不论用两种方式里的哪一个方式,都必须,1. 要使用starter才能生效, 或者写自己的starter, 2. 只使用一个,要么使用pagehelper,要么就是用mybatisPlus里的PaginationInnerInterceptor。 每种方式都必须对应自己的调用方式,不能错用。
  使用PageHelper
  依赖包
               com.github.pagehelper             pagehelper-spring-boot-starter         
  配置参数
  pagehelper.helper-dialect: mysql # 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页 pagehelper.reasonable: true # 支持通过 Mapper 接口参数来传递分页参数 pagehelper.support-methods-arguments: true
  PageHelper.startPage(pageNum, pageSize); // 设定当前页码,以及当前页显示的条数 List list = cityDao.selectByPage();        return list;
  使用PaginationInnerInterceptor
  依赖包
               com.baomidou             mybatis-plus-extension         
  starter加载
  org.springframework.boot.autoconfigure.EnableAutoConfiguration= com.joinsun.central..db.config.DBAutoConfiguration, com.joinsun.central..db.config.JdbcSessionConfiguration
  /**      * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题      */      @Bean     public MybatisPlusInterceptor mybatisPlusInterceptor() {         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));         return interceptor;     }
  @Override 	public Page listCity(Page myPage) { 		//Page page = PageHelper.startPage(myPage.getPage(), myPage.getLinage()); 		Page cityList = cityDao.selectPage(myPage, null);   		return cityList; 	}
  结束语
  通过springcloud/springboot架构,java实现微服务的实施案例目前成功的非常多,目前有很多基于springcloud和spring cloud alibaba的框架衍生出来的springcloud的微服务框架都是把类似很多的各种类似mybatis,redis,es, oauth, jwt等组件而糅合在一起的开发框架,使我们开发微服务起来非常的方便,但是由于封装了这些细节的地方,出现问题,如果对本身这些基础的组件不熟悉的情况下,就很难去定位,导致这样的一些架构仅仅只是在学习springcloud框架有意义,真正的公司的微服务框架更多的是自研究的框架, 例如我们公司的微服务框架都是自行去研发的,这样也就有了很多踩坑的体验,有这样的踩坑的经历千万别害怕,也许这就是让我们对技术更深入研究的机会。
  以后还会有更多的文章和大家一起来解析"拆坑"体会的经历。 欢迎大家持续关注。

这个日本女孩真厉害!16岁的小盐遥菜战胜韩国李时温进入半决赛韩国李时温VS日本小盐遥菜。WTT托克切克支线赛,女单14决赛。26岁的李时温昨天43战胜了国乒小将纵歌曼,实力还是很强大的。16岁的小盐遥菜是日本新生代的削球手,手感非常好,她1还没完?美联储7月或再加息75个基点!日本雅蠛蝶在通胀超预期创新高的背景下,美联储于北京时间2022年6月16日凌晨宣布加息75个基点(联邦基金目标利率区间至1。51。75),为28年以来最大加息幅度。加息引起了一系列的连锁反应张娜拉大婚现场,她穿白色婚纱太有古典美,清新妆容嫩得像学生妹大婚现场的张娜拉,身穿一款白色婚纱。传统的婚纱设计,重在突出薄纱点缀,但是她身上这款,却舍弃了浮华的装饰,只保留了基本的款式。方领的设计,最大化地展现了精致的锁骨,也给颈部区域留出河南中超最强音翻译小哥哥不用眼神,就是要用声音征服你在河南嵩山龙门的队伍中有着这样一个人,他不是球员,也不是教练员,更不是俱乐部的管理人员,不过的他在比赛中的表现可以说胜似一位教练员,不用眼神,只用声音指挥者场上的比赛陈蒲,回中场,微软将关闭Windows8。1系统,苹果提高AppleMusic学生价格16月24日讯,据媒体消息,谷歌发布报告称,黑客利用间谍工具在意大利哈萨克斯坦监控苹果和Android手机。对此,苹果新闻发言人称,已经封杀与本次黑客行动有关的已知账户和证书。谷歌马来西亚沙巴,看亚洲最美的日出,每一秒都绚丽夺目夏天来了,肯定小伙伴们的第一选择,就是找一些风景很美的海岛,玩玩水,度度假。东南亚国家来说,马来西亚肯定是个不错的选择,这里的海岛众多,有着纯天然且优美多姿的礁湖洁白细腻的沙滩以及澳大利亚美丽与治愈并存罗特尼斯岛矮胖子的治愈微笑矮胖而结实的小身子,微微驼背的身姿,短短的小尾巴,带暗条纹的额头,短而圆润的耳朵,湿润的小鼻头,胖嘟嘟的大脸,这种时常咧嘴笑着的小可爱,就是袋鼠家族呆萌第夏日的思念海风微拂清水湾,浪花空中溅。脚下的白沙软绵绵,白浪拍沙滩。七月的阳光刺人眼,白色的泳装秀曲线。只因人太美,头顶的烈日羞红了脸。离开岸边的遮阳伞,望着远方那一片蓝。想起了儿时小伙伴,夏日饮食几点建议夏天,天气炎烈,笔记认为在饮食方面,我们应该要注意以下几点1要做到干净卫生。因为夏季的环境致病微生物很容易滋生,如果没有把饭菜进行充分加热和制熟,很有可能会引起感染性肠道性的疾病而泰森解释咬霍利菲尔德耳朵原因我很愤怒,失去了冷静1997年6月28日,拳击界发生了一件臭名昭著的事件。泰森在比赛中咬了霍利菲尔德的耳朵。当时这场著名的重量级二番战被命名为喧嚣与骚动,现在这场比赛有一个更响亮的名字咬耳大战咬耳事件布拉特谈因凡蒂诺他想打倒我,因为他认为自己可以做的比我更好直播吧6月27日讯据Goal网站报道,前国际足联主席布拉特近日接受了记者的采访,在采访中他谈及了因凡蒂诺。目前,前国际足联主席布拉特指责现任国际足联主席因凡蒂诺试图破坏自己的声誉,
刘晓庆终于服老,穿衣搭配不故意扮嫩,看着顺眼多了随着时间的流逝,每个人都会渐渐老去。虽然服饰搭配与年龄无关,但年龄的增长会降低肌肤身材质量,从而导致大家必须舍弃一部分穿搭。刘晓庆这身穿搭是使用连衣裙打造的,很多人第一眼看到她这身斗鱼超击突破独家福利!呆妹儿联名皮肤大放送相信各位玩家在最近应该都了解过超击突破这一款游戏了吧?这是一款由韩国WonderPeople公司开发的新型大逃杀类型的游戏。这款游戏将在10月11日开服,在这款游戏当中玩家操纵的角七周年强势来袭,云缨赵怀真情侣皮肤登场,返场投票又有猴玩王者荣耀的小伙伴想必都知道王者的周年庆典有多豪气,皮肤点券免费送,珍稀皮肤道具返场以及各种主题曲主题CG让玩家一饱眼福。真是想起来都激动不已!最近。在七周年庆典来临之前,王者官博为什么生物体使用ATP作为通用的能量货币?在细胞出现之前,一种简单的双碳化合物可能是新陈代谢进化过程中的一个关键角色。这是英国伦敦大学学院的尼克莱恩及其同事的一项新研究的结果,该研究于10月4日发表在开放获取的PLOS生物中国股市需要不断炮制新的神话11长假期间,去了一趟成都,这次发现原来四川既是道教发源地,也是佛教发源地。怀着虔诚的信仰,先后拜了文殊院大慈寺铁像寺二江寺观音寺近慈寺,越来越强烈低感受到中国人的命运都逃不出轮回通榆县全力推进陆上风光三峡工程建设,在风驰电掣中跑出发展新速度国庆佳节日,建设忙正酣。10月1日,用无人机俯瞰通榆大地风电大路上,一辆辆装载着巨大风电设备的卡车正全速行驶,奔赴各电场进行交货安装通榆三一零碳智造产业园天能重工(通榆)新能源装备10个月蒸发368亿,安防老二市值腰斩文杨万里10月10日,安防老二大华股份放量跌停,股价创下近3年新低。截至收盘,该公司股价为11。57元,总市值为350。9亿元。从2022年初以来,大华股份累计跌幅为50。15,1社论有效发明专利量质齐升体现创新发展驱动力9日,国家知识产权局召开例行新闻发布会,我国有效发明专利实现量质齐升,高价值发明专利创造和储备不断加强,战略性新兴产业有效发明专利占国内总量的比重超过三成。上月底,世界知识产权组织鸿蒙手机降至3439元,5nm旗舰芯片5倍光学变焦,曾不被大众看好去年7月份的时候,华为召开了手机发布会,推出了华为P50系列,其中标准版的华为P50延期了2个月才发售,也就是去年9月份,而今这款手机已经上市有一年多的时间了,华为P50也从当初高华为高管研讨班(全景图)华为针对于高级管理干部的培训项目叫高管研讨班,收费比较昂贵,高管要自掏腰包几万块钱参加。在高管研讨班当中,会邀请公司的核心管理干部,就是高管来参与到高级研讨班的授课和引导中。华为高未来的趋势,web3商链项目名Daren中文名达人官网httpsdaren。marketOpensea信息1团队成员来自牛校和大厂核心团队由韩国最高学府首尔大学的硕士和博士,LG,阿里巴巴,陌陌,腾讯的产