模糊查询使用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("------------------------") } 复制代码
运行结果: