在实际开发过程中,我们经常会遇到使用动态sql语句的时候,例如,我们可以根据用户的id查询用户,也可以根据账号查询,也可以根据角色查询。。。。这个时候,如果我们为每一种查询都编写一条sql语句,那可以说是撞死的心都有了,而动态sql挽救了我们脆弱的心灵,有效的解决了这个问题。
相信如果大家看完了我Mybatis入门的博客,对Mybatis应该已经有了初步了解,那么我们人狠话不多,直接上代码,也要仔细看注释哦!
<!--namespace一定要是你接口的全命名哦-->
<mapper namespace="com.lsc.mapper.UserMapper">
<!--通过用户id查询用户,id要和接口的方法名一致!,
resultType为返回类型,parameterType为参数类型,
记得要写全包名,我这里是在配置文件中配置配置了别名,代码如下:
<typeAliases>
<typeAlias type="com.lsc.domain.User" alias="user"/>
</typeAliases>-->
<!-- collection为集合类型,open是以什么开始,close是以什么结束,item是集合里我们给取的别名,separator是分隔符,
原本的sql语句应为:select * from user where id in(1,2,3),此处的1,2,3是我要查询的id集合-->
<select id="findUserByIds" resultType="user" parameterType="list">
select * from user
<where>
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
<!--因为我们不知道要根据几个条件进行查询,所以此处我们使用if-->
<select id="findUserByParm" parameterType="user" resultType="user">
select * from user
<where>
<if test="id!=0">
and id=#{id}
</if>
<if test="username!=null">
and sername=#{username}
</if>
<if test="password!=null">
and password=#{password}
</if>
</where>
</select>