Mybatis之 —— 动态sql
MyBatis 的动态 SQL 是其强大特性之一,允许你在 Mapper 的 XML 文件中编写 SQL 语句,并在运行时根据传入的参数动态构建 SQL。
以下是一个使用 MyBatis 动态 SQL 的例子:
<mapper namespace="com.example.mapper.UserMapper">
<select id="findUsersByName" parameterType="string" resultType="com.example.model.User">
SELECT * FROM users
<where>
<if test="name != null and name.trim() != ''">
AND name = #{name}
</if>
</where>
</select>
</mapper>
在这个例子中,<select>
标签定义了一个查询操作,parameterType
指定了输入参数的类型,resultType
指定了返回结果的类型。<where>
标签会自动处理前导的 AND
或 OR
关键字,如果内部的条件不成立(即 name
为空或者为空字符串),则该条件不会被包含在最终的 SQL 语句中。
在 Java 代码中,你可以这样调用这个 Mapper 方法:
List<User> users = sqlSession.selectList("com.example.mapper.UserMapper.findUsersByName", "John Doe");
如果传入的名字是 "John Doe",则生成的 SQL 语句将是:
SELECT * FROM users WHERE name = 'John Doe'
如果名字是空的或者只包含空格,则 WHERE 子句不会出现,从而避免了不必要的数据库查询。这就是 MyBatis 动态 SQL 的基本用法。
评论已关闭