这篇文章基于上一篇文章的例子
Mybatis 多种条件查询和简单查询差别不是很大,更改xml映射文件就可以了。
一、模糊查询
模糊查询使用like,在配置文件中新建一个select标签,根据Sql语法规则构建好查询语句。
<select id="likeSearch" parameterType="String" resultType="User">
select * from user where user_name like concat('%',#{0},'%')
</select>
复制代码
在这里要注意,要查询的子串和正则表达式之间的连接要使用concat函数连接,否则会报错。
测试代码:
List<User> lu = session.selectList("likeSearch", "d");
for (User u : lu) {
System.out.println(u.getUser_name());
System.out.println(u.getUser_id());
System.out.println(u.getUser_phone());
System.out.println("------------------------");
}
复制代码
运行结果:
二、多条件查询
多条件查询就是构建查询语句时跟上一个and就可以了
<select id="multiSearch" parameterType="User" resultType="User">
select * from user where user_name like concat('%', #{user_name}, '%') and user_id like concat('%', #{user_id}, '%')
</select>
复制代码
在这里传递参数给Mybatis时参数类型可以写User类型,或者使用map类型
测试代码:
User u2 = new User();
u2.setUser_name("v");
u2.setUser_id("1");
List<User> lu = session.selectList("multiSearch", u2);
for (User u : lu) {
System.out.println(u.getUser_name());
System.out.println(u.getUser_id());
System.out.println(u.getUser_phone());
System.out.println("------------------------")
}
复制代码
运行结果: