一:多条件查询
传递一个参数的时候,是可以去直接写的(但是建议命名的时候要做到见名知意),但是传递多个参数的时候,怎么去区分呢?
1:在userMapper.xml 里面 占位符里面写的是: arg0, arg1... (下标是从0开始的)或者是param1、param2(下标是从1开始的)。
<!--多条件查询 方式一--><select id="queryUserByIdAndName1" resultType="User">select * from user where id = #{arg0} and username = #{arg1}; /*当然也可以写为 param1 注意它是以1开始的*/</select>
2:通过注解的形式
在接口里面用@Param的注解
/*** 根据id和姓名去查询用户* @return*/List<User> queryUserByIdAndName2(@Param("id") int id, @Param("username") String username);
占位符里面写的是你注解里面的名字。
<!--注解的形式去查询--><select id="queryUserByIdAndName2" resultType="User">select * from user where id = #{id} and username = #{username}; /*当然也可以写为 param1 注意它是以1开始的*/</select>
3:传递对象的形式(最常用)
/*** 用的是对象* @param user* @return*/List<User>queryUserByIdAndName3(User user);
在xml里面占位符写的是 对象里面的属性,注意属性的名字不能错,要严格的保持一致。
<!--传的是对象 找到的是get方法封装的是set方法注意里面写的是 属性--><select id="queryUserByIdAndName3" resultType="User" parameterType="com.findyou.entity.User">select * from user where id = #{id} and username = #{username}; </select>
二:模糊查询
模糊查询的sql语句如下:
select * from user where username like '%FindYou%'
怎么去拼接这个 %% 和 ' ' 呢?
方式一:
测试类里面的方法:
List<User> users = mapper.findByUsername1("%1%");
userMapper.xml里面的方法:
#{} 是mybatis的占位符,是会去自动拼接 ' '的。
<select id="findByUsername1" resultType="user" parameterType="string">select * from user where username like #{username};</select>
方式二:
测试类里面的方法:
List<User> users = mapper.findByUsername2("'%1%'");
userMapper.xml里面的方法:
用的是${} 老师说里面只能去写 value, 但是写其他也是可以的。${} 这个里面的东西是原样拼接的,不回去自动给你拼接。
<!--${} 是原样拼接老师说是只能去写 value的--><select id="findByUsername2" resultType="user" parameterType="string">select * from user where username like ${username};</select>