mybatis的五种模糊查询以及参数说明

一、更改参数

<mapper namespace="com.gx.mapper.UserMapper">
    <!-- 查询所有 -->
    <select id="selectLike" resultType="User">
       select * from user where name like #{name} </select>
</mapper>

  测试

    /**更改参数
     * select * from user where name like #{name}
     */
    @Test
    public void selectLike01() {
        User user =new User();
        user.setName("%云6%");
        List<User> list = userMapper.selectLike(user);
        for (User user2 : list) {
            System.out.println(user2);
        }
    }

二、使用%%拼接,推荐使用

<mapper namespace="com.gx.mapper.UserMapper">
    <!-- 查询所有 -->
    <select id="selectLike" resultType="User">
       select * from user where name like "%"#{name}"%"</select>
</mapper>

  测试

	/**使用%%拼接
	 *  推荐使用
	 * select * from user where name like "%"#{name}"%"
	 */
	@Test
	public void selectLike02() {
		User user =new User();
		user.setName("云6");
		List<User> list = userMapper.selectLike(user);
		for (User user2 : list) {
			System.out.println(user2);
		}
	}

 三、使用$拼接

<mapper namespace="com.gx.mapper.UserMapper">
    <!-- 查询所有 -->
    <select id="selectLike" resultType="User">
       select * from user where name like "%${name}%"
    </select>
</mapper>

  测试

	/**使用$拼接
	 * select * from user where name like "%${name}%"
	 */
	@Test
	public void selectLike03() {
		User user =new User();
		user.setName("云6");
		List<User> list = userMapper.selectLike(user);
		for (User user2 : list) {
			System.out.println(user2);
		}
	}

四、使用CONCAT函数,但是数据库切换就麻烦

<mapper namespace="com.gx.mapper.UserMapper">
    <!-- 查询所有 -->
    <select id="selectLike" resultType="User">
       select * from user where name like CONCAT("$",#{name},"%") 
    </select>
</mapper>

  测试

	/**使用CONCAT函数,但是数据库切换就麻烦
	 * select * from user where name like CONCAT("%",#{name},"%")
	 */
	@Test
	public void selectLike04() {
		User user =new User();
		user.setName("云6");
		List<User> list = userMapper.selectLike(user);
		for (User user2 : list) {
			System.out.println(user2);
		}
	}

五、更改别名,bind绑定

<mapper namespace="com.gx.mapper.UserMapper">
    <!-- 查询所有 -->
    <select id="selectLike" resultType="User">
     <bind name="keywords" value="'%'+name+'%'">    select * from user where name like #{keywords} </select> </mapper>

  测试

	/**更改别名,bind绑定
	 * <bind name="keywords" value="'%'+name+'%'"/>
	 *select * from user where name like #{keywords}
	 */
	@Test
	public void selectLike05() {
		User user =new User();
		user.setName("云6");
		List<User> list = userMapper.selectLike(user);
		for (User user2 : list) {
			System.out.println(user2);
		}
	}

六、参数说明

如果Mapper里面的方法的参数是多个参数是,可以使用以下的写法:

public interface UserMapper {
	public void add(String name,String address,Date birthday);
}

修改mapping.xml

<mapper namespace="com.gx.mapper.UserMapper">
	<!-- 添加 -->
	<!-- id对应接口里面的方法名,不能重复 -->
	<!-- parameterType:参数类型 -->
	<!--<parameterMap type="com.gx.domain.User" id="myuser"> <parameter property="name" 
		javaType="java.lang.String"/> <parameter property="address" javaType="java.lang.String"/> 
		<parameter property="birthday" javaType="java.lang.String"/> </parameterMap> -->
	<!-- parameterMap:定义参数的map类型 方法里面的传参必须是map,要在mapper里面创建一个id=myuser的节点 -->
	<!-- userGeneratedKeys="true" 是否使用自动增长,默认为true -->
	<!-- parameterType和parameterMap只能存在一个 -->
	<insert id="add" >
		<!-- 在mybatis3.3及其以下的版本可以使用#{num}去取对应下表的形式参数的值 -->
		<!-- insert into
		user(name,address,birthday) values(#{0},#{1},#{2}) -->
		<!-- 在mybatis3.4及其以上的版本不能使用#{num}去取对应下表的形式参数的值 -->
		insert into
		user(name,address,birthday) values(#{param1},#{param2},#{param3})
	</insert>

</mapper>

  测试

public class Test {

	public static void main(String[] args) {
		SqlSession session = MyBatisUtils.openSession();
		//得到UserMapper的代理对象
		UserMapper userMapper = session.getMapper(UserMapper.class);
			userMapper.add("赵云"+101, "常山"+101, new Date());
			System.out.println("添加成功");
			MyBatisUtils.closeSession(session);
	}

}

 

posted @ 2020-04-23 21:38  青青子衿啊  阅读(1245)  评论(0)    收藏  举报