MyBatis

mybatis源码学习------目录

烈酒焚心 提交于 2020-11-17 02:00:15
基础支持层 Reflector类 Invoker接口及其子类 property工具包 TypeParameterResolver MetaClass类 MetaObject&ObjectWrapper UnpooledDataSource PooledDataSource cache缓存模块 Transaction事务模块 TypeHandler类型处理器模块 binding模块 核心处理层 configuration配置的解析 mapper配置的解析 resultMap和sql片段的解析 sql语句配置的解析 动态sql的解析(SqlNode) 动态sql的解析(SqlSource) ResultSetHandler接口 ResultSetHandler之简单映射 ResultSetHandler之嵌套映射 ResultSetHandler之嵌套查询&懒加载 主键生成器KeyGenerator StatementHandler接口 执行器Executor(一) 执行器Executor(二) 来源: oschina 链接: https://my.oschina.net/u/4340499/blog/4719243

技术人员成长的坑

╄→尐↘猪︶ㄣ 提交于 2020-11-14 11:22:09
在软件和互联网行业做了 20 多年,结合自己的成长过程和看到的其他人的成长过程,谈谈我的感受,希望能够对在技术上发展不同阶段的人有所启发。如果有疑问,大家也可以消息我,或者加我微信讨论。 对于入行的新人 1 . 切记不要太追求安逸,把他人的果实当作自己的能力 大家都是从新人进入到这个行业的,软件这个行业可以说很浅,很容易,也可以说很难,很深。很浅,很容易,因为现在的框架和工具太多了,让编程变得越来越容易,比如做 GUI ,之前有 VB 这种拖拉编程模式,现在的 IOS 和安卓也是控件拖拉方式。如果做 WEB 前端, 之前的 jquery 和现在的 VUE 都有很多组件框架,都非常强大和漂亮,而且网上还有很多例子代码,让工作变成了拷贝粘贴流程。如果做后台,现在很多功能强大的中间件,都不需要自己去写 SQL ,就可以完成很多事情。现在的一线大厂也是分工细化,基础架构的东西也是由核心团队负责的,多数人都是在写业务代码,当然写业务代码不代表不会有技术含量,看你怎么去发现,有兴趣请参看 ” 写好业务代码的难点在哪里 ” 。 长期做这种简单重复式的开发导致和基础的东西脱离太久,很多人连 SQL 都忘记了,更谈不上 SQL 性能的优化,也就导致很多人错误的认为基础知识无用。框架这些东西是变化无穷的,但基础的东西是基本上不变的。要走的远,必须去理解这些底层的不变的东西,才能真正的做到以不变应万变

mybatis的association以及collection的用法

可紊 提交于 2020-11-14 11:13:36
实体类: public class ResumeDetailVO { @ApiModelProperty ( "用户信息" ) private UserInfo userInfo ; //一对一,使用association @ApiModelProperty ( "工作经验" ) List < Experience > experiences ; //一对多,使用collection } 对应的resultMap : < resultMap id = " ResumeDetailMap " type = " ResumeDetailVO " > < association property = " userInfo " javaType = " UserInfoVO " > < result column = " name " property = " name " > </ result > < result column = " phone " property = " phone " > </ result > < result column = " email " property = " email " > </ result > < result column = " identity_card " property = " identityCard " > </

java快速开发平台

╄→尐↘猪︶ㄣ 提交于 2020-11-14 06:48:28
   前言:    按目前IT行业发展,企业系项目,行业系项目,已经慢慢走向开源交付为主,根据小编这边数据调查,很多中小企业没有过多资深的技术人员,导致很多项目没有办法去    承包,当然包括想要开展其它不是专区的大企业,那么出现这种状态是因为IT发展太快了?人员设备跟不上?答案很明显。只是其中一个因素,例如:公司多了,技术分    散了,没办法去快速去支撑一个项目,尤其是系统的基层研发,或者是,跨领域扩展业务的开展,前期的项目切入,以及系统的兼容项目需求,没法使用原系统去兼容,    等等。种种因素,会导致企业失去一个机会,按实话说,就是能接下的,但是没办法去交付,这个就等于企业失去收益,如果按企业扩展业务角度来说,更会影响企业的    发展。    想要跟上社会的脚本,小编认为,必须寻找能支撑底层去做二次开发的工具,这样能快速去交付,考虑好工具的兼容性,以及是否能满足项目大部分的项目需求,现在    这种就是企业最新的一个动态方向,不会流失能握住的客户,不会失去一个机会。    我们怎么去选择快速开发平台呢?那么小编也不脸红的,推荐一下,自家的Java快速开发平台,当然只是一个分享,IT人员可以大家到网络上去考究,研究,分析,    选取,浏览,对比,等等,那么快速开发平台要求有那些呢?    可以通过自家的平台,大家进行对比一下。我们平台工具目标是:快速交付项目

深入理解:一文讲透RabbitMQ

浪尽此生 提交于 2020-11-14 01:34:09
点击蓝色“ 黎杜编程 ”关注我哟 加个“ 星标 ”,每天上午 09:25,干货推送! 关于RabbitMQ 出身:诞生于金融行业的消息队列 语言:Erlang 协议:AMQP(Advanced Message Queuing Protocol 高级消息队列协议) 关键词:内存队列,高可用,一条消息 队列结构 Producer/Consumer:生产者消费者 Exchange:交换器,可以理解为队列的路由逻辑,交换器主要有三种,图中是Direct交换器 Queue:队列 Binding:绑定关系,实际是交换器上映射队列的规则 发送和消费一条消息 在上图的模式下,交换器的类型为Direct,伪代码表示消息的生产和消费 消息生产 #消息发送方法 #messageBody 消息体 #exchangeName 交换器名称 #routingKey 路由键 publishMsg(messageBody,exchangeName,routingKey){ ...... } #消息发送 publishMsg( "This is a warning log" , "exchange" , "log.warning" ); RoutingKey=log.warning,和队列A与交换器的绑定一致,所以消息被路由到了队列A上。 消息消费 对于消息消费而言,消费者直接指定要消费的队列即可

每天两小时轻松掌握java、spring、Redis、JVM、分布式、高并发

早过忘川 提交于 2020-11-13 13:14:34
干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。要的留下私信我,一小时之内回复。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货的免费直播讲解。 需要资料直接关注下方公众号即可免费领取。 精选JAVA 高并发分布式架构课程视频 。 高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx 互联网架构专题课程【马士兵教育】---Java架构师学这个就够了 若干架构资料文档 面试系列视频发放 如果需要获取到这个里面的文档的话帮忙转发一下然后再关注下方公众号得到获取方式吧! 来源: oschina 链接: https://my.oschina.net/u/4310950/blog/4715598

推荐几个IDEA插件,Java开发者撸码利器。

帅比萌擦擦* 提交于 2020-11-13 02:27:29
<div id="cnblogs_post_body" class="blogpost-body "> <h2 id="autoid-0-0-0">这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 </h2> <h3 id="autoid-1-0-0">JRebel for IntelliJ</h3> <p>一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能确实很强大。算是开发必备神器了。热部署快捷键是control+F9/command+F9。</p> <h3 id="autoid-1-1-0">.ignore</h3> <p>git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。</p> <h3 id="autoid-1-2-0">CamelCase</h3> <p>将不是驼峰格式的名称,快速转成驼峰格式,安装好后,选中要修改的名称,按快捷键shift+alt+u。</p> <h3 id="autoid-1-3-0">Lombok plugin</h3> <p>开发神器,可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法,总之就是为了简化实体类而生的插件。</p> <p><img src="https://img2018.cnblogs

给你的 MyBatis-Plus 装上批量插入的翅膀

浪尽此生 提交于 2020-11-11 14:43:46
大家有用过MyBatis-Plus(简称MP)的都知道它是一个MyBatis的增强工具,旨在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。 特点 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere ) 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作

阿里弃用Hibernate,却用MyBatis,竟然是因为这个!

一世执手 提交于 2020-11-11 10:25:19
最近一直在研究MyBatis源码,作为国内经常使用的持久层框架,其内部代码的设计非常优秀。比如在开发过程中,有能力对框架进行深度的定制化开发,解决BUG也更加得心应手! 另外学习开发者是如何设计高扩展性、低耦合性的代码,便于在自己的开发场景中应用。 而在Mybatis中,缓存是一个绕不开的话题。比如说,MyBatis的一级缓存竟然还会引来麻烦? MyBatis 一级缓存与 SpringFramework 的声明式事务有冲突吗?在 Service 中开启事务,连续查询两次同样的数据,结果两次查询的结果不一致。这些应该如何解决? 使用 Mapper 的 selectById 查出来实体,修改实体的属性值,然后再 selectById 查找实体,发现之前查出来的是刚才修改过的实体,不是由数据库查出来的 如果不开启事务,则两次请求查询的结果是相同的,控制台打印了两次 SQ 然而大多数人对Mybatis框架的理解仅仅局限于使用,并不熟悉框架底层的实现原理。但MyBatis框架在互联网大厂是非常重要的角色,比如说阿里巴巴的持久层抛弃hibernate,采用的就是MyBatis框架 为什么阿里巴巴的持久层抛弃hibernate,采用MyBatis框架? 原因大概有以下4点: 阿里在mysql上下了大功夫,他们对数据查询的要求也比较高,很多sql查询都要精心设计

身为一个合格的Java架构师,应该了解并且常用的Java技术有哪些?

时光怂恿深爱的人放手 提交于 2020-11-11 10:19:46
目录 前言 来自小编的建议 JAVA 该学习的哪些技术? 初中级 Java 程序员必须掌握的知识 Java 程序员必备书单 基础 并发 JVM 推荐的视频教程 前言 我听说编程语言,经常使用的是其中20%的技术。在Java这门语言中,这20%包括哪些内容?参加培训两个月了,还有两个月的时间,要想在两个月后,找到一份Java初级程序员的工作,有哪些是必须掌握的,有哪些是可以现学现卖的?一个完整的Javaweb项目,有哪些具体模块,每个模块用到的技术是哪些? 来自小编的建议 建议不要管那个常不常用的这些问题!技术一直在不断更新,学习是永不止境的,每个技术阶段虽然都有对应的常用技术需要学习,但是单单学习几个单个的技术是远远不够的。如果你想找工作就要老老实实的学, 操作系统、计算机网络这些基础知识,工作之后基本都忘的差不多了。但是,我个人觉得也还是要学的。很多人都说数据结构和算法就像一个程序员的内功,前期可能你看不出来,等到后面你再和那些算法和数据结构厉害的人比可能就会相形见绌。所以,我觉得除了应付找工作之外。搞好基础知识。如果非要学那些常用,我个人觉得:Spring、Hibernate、Mybatis 等框架、Dubbo、Zookeeper、常见的消息队列(比如Kafka、RocketMq)的使用、缓存Redis、MySQL等等这些东西都应该是每个Java初中级程序员必备的技能了吧!