MyBatis <include refid="XXX">
标签详解
MyBatis作为一种优秀的持久化框架,提供了丰富的XML配置选项,其中<include>
标签是一个非常有用的特性,用于引入SQL片段,提高代码的可维护性和可读性。
解释
<include>
标签用于引用SQL代码片段。refid
是引用的SQL片段的id名称,必须保持唯一。
作用
- 避免重复编写相同的SQL片段,提高代码复用性。
- 方便后期维护,当需要修改SQL片段时,只需修改片段的定义,而不必修改每个引用该片段的地方。
- 在SQL语句中明确指定字段,而不使用
*
通配符,有助于提高代码效率。
代码示例
<sql id="Student_Column_List" >
studentID, studentName, studentAge, studentEmail, studentComment
</sql>
<select id="selectByPrimaryKey" resultMap="com.rr.dto.StudentDto" parameterType="java.lang.Long">
select
<include refid="Student_Column_List" />
from t_student
where studentID = #{studentID, jdbcType=BIGINT}
</select>
返回自增id
在插入操作中,如果需要返回自增id,可以使用以下方式:
<insert id="insertSelective" parameterType="cn.tencent.eee.aaa.dao.model.User" useGeneratedKeys="true" keyProperty="id">
<!-- 插入操作的具体语句 -->
</insert>
注意:
-
通过以上方式获取自增id时,会直接赋值到领域模型的实体id中,可以通过实体对象的id属性获取。
Integer i = user.getId; if(userMapper.insertSelective(user) > 0){ i = user.getId; }
-
如果
<insert>
标签包含多条insert语句,返回的自增id将是最后一条insert语句生成的id。
动态排序示例
SELECT
name, sex, age, user_grade as userGrade
FROM user
<if test="orderField != null" >
ORDER BY
<choose>
<when test="orderField == 'name'">
name ${orderType}
</when>
<when test="orderField == 'age'">
age ${orderType}
</when>
<when test="orderField == 'userGrade'">
user_grade ${orderType}
</when>
<otherwise>
create_time ${orderType}
</otherwise>
</choose>
</if>
上述示例中,使用<choose>
和<when>
标签根据传入的参数进行动态排序,提高了查询灵活性。
注意: mapper接口和xml包名要保持一致,以免出现扫描不到的问题。这是一个常见的错误,容易被忽视。
标签:片段,标签,详解,user,SQL,MyBatis,orderType,id From: https://www.cnblogs.com/bunnyfufuu666blog/p/17859339.html