sqlFragment

Mybatis3.4.x技术内幕(十六):Mybatis之sqlFragment(可复用的sql片段)

冷暖自知 提交于 2019-11-28 12:53:49
Mybatis目前最新版本为3.4.0,因此,我也将我的项目由3.3.1替换为3.4.0。在上一篇博文中,详细分析了Mybatis在使用foreach循环进行批量insert,返回主键id列表时,如果使用BatchExecutor,那么由于Mybatis存在bug,返回的id列表将是null值。很遗憾的告诉大家,Mybatis3.4.0依然是没有修复该bug的,该bug依然存在。 今天,我们将分析Mybatis之sqlFragment,可以翻译为sql片段,它的存在价值在于可复用sql片段,避免到处重复编写。 在工作中,往往有这样的需求,对于同一个sql条件查询,首先需要统计记录条数,用以计算pageCount,然后再对结果进行分页查询显示,看下面一个例子。 <sql id="studentProperties"><!--sql片段--> select stud_id as studId , name, email , dob , phone from students </sql> <select id="countAll" resultType="int"> select count(1) from ( <include refid="studentProperties"></include><!--复用--> ) tmp </select> <select id=