mybatis中映射文件include标签的应用
目录
- mybatis映射文件include标签应用
- 1.引用同一个xml中的sql片段
- 2.引用公用的sql片段
- 3.对于多个xml文件需要同时引用一段相同的
- mybatis sql xml include标签 (代码去重)
mybatis映射文件include标签应用
MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段可以使用标签提取出来,在使用的地方使用标签引用即可.sql标签中id属性对应include标签中的refid属性。通过include标签将sql片段和原sql片段进行拼接成一个完整的sql语句进行执行。
具体用法如下:
1.引用同一个xml中的sql片段
<sql id="sqlid"> res_type_id,res_type </sql> <select id="selectbyId" resultType="com.property.vo.PubResTypeVO"> select <include refid="sqlid"/> from pub_res_type </select>
2.引用公用的sql片段
include标签中也可以用property标签,用以指定自定义属性。在sql标签中通过${}取出对应的属性值
<select id="queryPubResType" parameterType="com.property.vo.PubResTypeVO" resultMap="PubResTypeList"> select a.res_type_id, <include refid="com.common.dao.FunctionDao.SF_GET_LNG_RES_TYPE"> <property name="AI_RES_TYPE_ID" value="a.res_type_id"/> <property name="lng" value="#{lngId}"/> <property name="female" value="'女'"/> </include> as res_type from pub_res_type a </select>
3.对于多个xml文件需要同时引用一段相同的
在某个xml 中定义这个 sql 代码片段,在需要引用的地方使用全称引用即可,例子如下:
ShareMapper.xml
<mapper namespace="com.company.ShareMapper"> <sql id="someSQL"> id,name </sql> </mapper>
CustomMapper.xml
<mapper namespace="com.company.CustomMapper"> <select id="selectSome" > select <include refid="com.company.ShareMapper.someSQL"/> from t </select> </mapper>
使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。
如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。
resultMap
:适合使用返回值是自定义实体类的情况resultType
:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型.
mybatis sql xml include标签 (代码去重)
mybatis sql xml 对于重复的代码片段 可以使用 include 标签进行优化
例如 以下将查询条件进行优化:
<sql id="where"><!-- 定义代码片段--> <where> <if test="CarNo != null and CarNo != ''"> and car_no like concat('%',#{CarNo},'%') </if> <if test="CardNo != null and CardNo != ''"> and card_no = #{CardNo} </if> <if test="serviceType != null and serviceType != ''"> and service_type = #{serviceType} </if> .....省略 </where> </sql> <select id="queryList" resultType="com.framework.entity.WeightEntity"> select * from weight <include refid="where"/> <!-- 引用--> <if test="offset != null and limit != null"> limit #{offset}, #{limit} </if> </select> <select id="queryTotal" resultType="int"> select count(*) from weight <include refid="where" /> <!-- 引用-> </select>
当然 include标签不仅仅用于where, 只要重复代码片段都可使用
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)