下面是MyBatis实现动态查询、模糊查询功能的完整攻略。
动态查询
动态查询就是查询条件随着用户的选择而动态生成的查询语句。MyBatis提供了三种方式来实现动态查询:
If
If标签用于判断某个条件成立时才会执行包含在其中的查询语句,示例代码如下:
<select id="dynamicIfTest" parameterType="map" resultType="com.example.User">
SELECT * FROM user WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</select>
其中,id
和username
是用户需要动态传递的参数。当id
和username
都不为null时,会自动组装成下面的查询语句:SELECT * FROM user WHERE id = #{id} AND username = #{username}
。
Choose,when,otherwise
Choose、when、otherwise标签组成了一个更灵活的条件语句,用于判断多个条件中的一个成立时才会执行包含在其中的查询语句。示例代码如下:
<select id="dynamicChooseTest" parameterType="map" resultType="com.example.User">
SELECT * FROM user WHERE 1=1
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="username != null">
AND username = #{username}
</when>
<otherwise>
AND state = 1
</otherwise>
</choose>
</select>
当id
和username
有一个不为null时,会自动组装成下面的查询语句:SELECT * FROM user WHERE id = #{id}
或者SELECT * FROM user WHERE username = #{username}
;当id
和username
都为null时,会自动组装成下面的查询语句:SELECT * FROM user WHERE state = 1
。
Where
Where标签用于在动态生成的查询语句中添加WHERE
关键字,示例代码如下:
<select id="dynamicWhereTest" parameterType="map" resultType="com.example.User">
SELECT * FROM user
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="username != null">
AND username = #{username}
</if>
</where>
</select>
该示例代码会自动组装成下面的查询语句:SELECT * FROM user WHERE id = #{id} AND username = #{username}
。
模糊查询
模糊查询就是在查询语句中使用通配符来匹配包含指定字符的所有记录。MyBatis提供了两种方式来实现模糊查询:
Like
Like标签用于在查询语句中添加LIKE
关键字,示例代码如下:
<select id="likeTest" parameterType="string" resultType="com.example.User">
SELECT * FROM user WHERE username LIKE CONCAT('%',#{value},'%')
</select>
该示例代码会自动组装成下面的查询语句,在value
参数为abc
时:SELECT * FROM user WHERE username LIKE '%abc%'
。
Trim
Trim标签用于在查询语句中添加LIKE
关键字并去掉不必要的前缀和后缀空格,示例代码如下:
<select id="trimTest" parameterType="string" resultType="com.example.User">
SELECT * FROM user
<where>
<trim prefix="AND" prefixOverrides="AND">
<if test="username != null">
AND username LIKE CONCAT('%',#{value},'%')
</if>
</trim>
</where>
</select>
该示例代码会自动组装成下面的查询语句,在value
参数为abc
时:SELECT * FROM user WHERE username LIKE '%abc%'
。
以上就是MyBatis实现动态查询、模糊查询功能的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis实现动态查询、模糊查询功能 - Python技术站