Mybatis根据需求进行过滤查询示例

<!---提供根据用户名称和密码查询用户的功能。-->

<selectid="selectByNameAndPassword"resultType="User">

SELECT*

fromuser

wherename=#{name}

andpassword=#{password}

</select>



<!---提供根据用户名称和年龄范围查询用户的功能。-->

<selectid="selectByMinAndMax"resultType="User">

SELECT*

FROMuser

<includerefid="where_sql"/>

</select>

<!--根据不同的条件,需要进行筛选,就可以使用mybatis框架的动态sql-->

<sqlid="where_sql">

<!--需要给sql取别名-->

<where>

<!--在过滤语句中需要进行语句判断,是否拼接sql-->

<iftest="name != null and name != ''">

<!--根据自己的需求以及传入的属性进行判断,八大基本数据类型的包装类默认值是null,需要进行判断,以及''都需要进行判断-->

ANDnameLIKEconcat('%',#{name},'%')

<!--根据需求进行过滤筛选,使用sql语句中的concat进行拼接-->

</if>

<iftest="minAge != null">

ANDage&gt;=#{minAge}

</if>

<iftest="maxAge != null">

ANDage&lt;=#{maxAge}

</if>

</where>

</sql>

/**

* 提供根据用户名称和密码查询用户的功能。

* @param name

* @param password

* @return 返回一个user对象

*/

UserselectByNameAndPassword(@Param("name")Stringname,@Param("password")Stringpassword);

/**

* 提供根据用户名称和年龄范围查询用户的功能。

* @param qo  可以把想查询相关的属性进行封装

* @return    返回一个user集合

*/

List<User>selectByMinAndMax(UserQueryObjectqo);

@Param注解:相当于给属性值取别名然后sql语句中就可用"#"去进行取值;注解属于mybatis框架!

"#":属于预编译处理

"$":属于字符串替换

'%':属于sql中LIKE的拼接字符,如果%在前面表示以什么值结尾进行过滤,如果%在后面表示以什么值为开头进行过滤,如果有两个%则表示只要包含该值就可以进行过滤

&gt;:属于大于号

&It;:属于小于号

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容