Mybatis标签学习

mybatis很简单,直接首先SQL,但是知识点比较多,每次都是现用现查,写此文目的一来是汇总,二来是备忘。

概述

在这里插入图片描述

sql

<sql>节点,大多数人对于此标签的印象局限于:用来包含数据库的字段的,以便用来替换所有字段*符号,用来提高执行速度:

<sql id="Base_Column_List" >
	id, `name`, `desc`, date_format(updatetime, '%Y-%m-%d %H:%i:%s') as updatetime, updateby, isactive
</sql>

在 mybatis 的定义中, <sql>节点是用来定义可重用的 SQL 代码段,它可以在其他语句中使用<include>节点来包含。

include

配合sql标签可实现SQL片段的复用:

<sql id="totalSearchSql">
	/* 分配状态 */
	<if test="isDistrib != null and is_distrib !=''">
		and ly.is_distrib = #{isDistrib}
	</if>
</sql>

在这里插入图片描述
并可以使用#{}占位符参数化的(此处的参数不是调用时传进来的), 不同的属性值通过包含的实例而变化。

上面说的都是在同一个mapper.xml文件里面实现SQL片段的复用。不同的mapper.xml文件里面可以定义同名的标签id。

进阶:在不同的mapper.xml文件复用SQL片段?
引入时加上命名空间标识,如<include refid="org.aaa.dao.AntelopeCheckDao.totalSearchSql"/>(其中org.aaa.dao.AntelopeCheckDao为命令空间,定义在mapper标签的namespace属性上)

定义在CheckDao.xml里面的测试SQL片段:

<select id="testInclude" parameterType="Map" resultType="Map">
	select * from rpt_rhino_record_lingyang ly where 1=1 <include refid="org.aaa.dao.AntelopeCheckDao.totalSearchSql"></include> limit 1
</select>

对应的mapper接口:

Map<String, Object> testInclude(Map<String, Object> paramMap);

include标签里面可以使用property标签,用以指定自定义属性?

猜你喜欢

转载自blog.csdn.net/lonelymanontheway/article/details/108886820
今日推荐