实体类的包装对象作为查询条件

Posted chenguosong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体类的包装对象作为查询条件相关的知识,希望对你有一定的参考价值。

实体类的包装对象作为查询条件

首先User实体类对应数据库表中的字段

package chen.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
  //以下省略get set方法
}

创建QueryVo实体类内容如下:

package chen.domain;
//User实体类在chen.domanin包下
public class QueryVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

IUserDao.xml

此处传递的参数parameterType是QueryVo实体类,但是查询语句需要的是User对象里面的username,我们可以用Query里面的user对象直接用到username,此处用到的是OGNL语法。

    <select id="findUserByVo" parameterType="chen.domain.QueryVo" resultType="chen.domain.User">
        select * from user where username like #{user.username}
    </select>

在接口里写好方法

    /**
     *根据QUERYVO中的条件查询用户
     * @return
     */
    List<User> findUserByVo(QueryVo vo);

测试类里面看一下结果

    /**
     * 测试使用QueryVo作为查询条件
     */
    @Test
    public void testfindUserByVo(){
        QueryVo Vo=new QueryVo();
        User user=new User();
        Vo.setUser(user);
        user.setUsername("李%");
        //执行查找方法
        List<User> users= userDao.findUserByVo(Vo);
        for (User u:users) {
            System.out.println(u);
        }
    }

运行结果

User{id=6, username=‘李智‘, birthday=Mon May 25 21:41:51 CST 2020, sex=‘男‘, address=‘宝鸡‘}
User{id=9, username=‘李四‘, birthday=Tue May 26 21:26:01 CST 2020, sex=‘男‘, address=‘钓鱼‘}
User{id=10, username=‘李四‘, birthday=Mon Jun 22 22:12:58 CST 2020, sex=‘男‘, address=‘钓鱼‘}

以上是关于实体类的包装对象作为查询条件的主要内容,如果未能解决你的问题,请参考以下文章

如何跳过查询条件片段中的空对象?

Mybatis--02

Mybatis基础学习—映射文件

多条件查询

分页,条件查询

实体对象转QueryWrapper 便捷实现条件查询