Mybatis动态SQL与模糊查询

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中使用如下的查询方式


查询过程如下:

    ConditionUser param = new ConditionUser("%o%", 13, 18);

    List users = session.selectList("mybatis.test7.userMapper.getUser", param);
    for (mybatis.bean.User user : users) {
        System.out.println(user);
    }

会输出查询结果。

但这样做,还要一个问题,假设当前需要查询的name,用户没有输入,则会出错,如何解决呢?

userMapper.xml中的配置如下:


查询测试如下:

    ConditionUser param = new ConditionUser("%null%", 13, 18);

    List users = session.selectList("mybatis.test7.userMapper.getUser", param);
    for (mybatis.bean.User user : users) {
        System.out.println(user);
    }

你可能感兴趣的:(Mybatis,mybatis)