Mybatis动态SQL与模糊查询
2016-09-18 11:50
603 查看
Mybatis动态SQL与模糊查询
创建User表
CREATE TABLE d_user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10), age INT(3) ); insert into d_user(name,age) values('Tom',12); insert into d_user(name,age) values('Bob',13); insert into d_user(name,age) values('Jack',18);
需要实现多条件查询用户(姓名模糊匹配, 年龄在指定的最小值到最大值之间)
定义查询条件类
ConditionUser,如下:
package mybatis.bean; public class ConditionUser { private String name; private int minAge; private int maxAge; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMinAge() { return minAge; } public void setMinAge(int minAge) { this.minAge = minAge; } public int getMaxAge() { return maxAge; } public void setMaxAge(int maxAge) { this.maxAge = maxAge; } @Override public String toString() { return "ConditionUser [name=" + name + ", minAge=" + minAge + ", maxAge=" + maxAge + "]"; } public ConditionUser(String name, int minAge, int maxAge) { super(); this.name = name; this.minAge = minAge; this.maxAge = maxAge; } public ConditionUser() { } }
在
userMapper.xml中使用如下的查询方式
<select id="getUser" parameterType="mybatis.bean.ConditionUser" resultType="mybatis.bean.User"> select * from d_user where name like #{name} and age between #{minAge} and #{maxAge} </select>
查询过程如下:
ConditionUser param = new ConditionUser("%o%", 13, 18); List<mybatis.bean.User> users = session.selectList("mybatis.test7.userMapper.getUser", param); for (mybatis.bean.User user : users) { System.out.println(user); }
会输出查询结果。
但这样做,还要一个问题,假设当前需要查询的name,用户没有输入,则会出错,如何解决呢?
在
userMapper.xml中的配置如下:
<select id="getUser" parameterType="mybatis.bean.ConditionUser" resultType="mybatis.bean.User"> select * from d_user where <if test='name!="%null%"'>name like #{name} and</if> age between #{minAge} and #{maxAge} </select>
查询测试如下:
ConditionUser param = new ConditionUser("%null%", 13, 18); List<mybatis.bean.User> users = session.selectList("mybatis.test7.userMapper.getUser", param); for (mybatis.bean.User user : users) { System.out.println(user); }
相关文章推荐
- mybatis的动态SQL与模糊查询
- MyBatis的动态SQL的模糊查询
- Mybatis 1.动态sql 2.模糊查询
- MyBatis动态sql中模糊查询
- MyBatis笔记07 - 动态SQL与模糊查询
- MyBatis入门07--实现sql动态模糊查询
- Mybatis学习总结之动态SQL与模糊查询
- 【Mybatis学习总结六】动态SQL与模糊查询
- MyBatis-动态sql与模糊查询 -07
- 【mybatis】动态SQL之模糊查询
- Mybatis之动态SQL 模糊查询
- Mybatis 模糊查询和动态sql语句
- MyBatis动态SQL与模糊查询
- myBatis学习笔记(6)——动态SQL & 模糊查询
- 03. mybatis 动态sql && 模糊查询
- MyBatis笔记(九)——动态SQL与模糊查询
- mybatis 动态SQL与模糊查询
- 利用mybatis的动态sql 进行批量模糊查询
- Mybatis学习笔记-动态SQL和模糊查询
- mybatis中怎么使用like形成动态模糊查询,错误使用CONCAT拼接sql的看过来