MyBatis中使用POJO对象定义QueryVo来实现查询

where查询条件具有单一性的话,我们可以通过#{} ${}来表示对某字段的筛选;但是如果需要进行复杂查询,也可以通过定义一个pojo对象来实现。

  1. 首先,介绍一下OGNL表达式
    OGNL表达式支持通过类名.属性名来达到类名.成员方法名()的效果。
    如一个自定义的User类 user对象中,可以通过
    user.username
    来访问user.getUsername()
  2. 编写实体类(记得mysql里建个表哦)

/entity getter setter省略/
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
/*getters and setters */
@Override
public String toString() {
return “User [id=” + id + “, username=” + username + “, birthday=” + birthday + “, sex=” + sex + “, address=”+address + “]”;
}
}

  1. 编写QueryVo class,即POJO对象,其实就是封装了一层实体类,以定义一些复杂的查询操作

public class QueryVo {
private User user;

public User getUser() {
return user;
}

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

  1. 编写IUserDao.xml
    在该配置文件中 添加一个element
select * from user where username like #{user.username}

/IUserDao.xml in resources/

select * from user where username like #{user.username}

5 编写测试类


/*test code*/
@Test
public void testFindByVo() throws IOException {
QueryVo vo = new QueryVo();
User user = new User();
user.setUsername("%Fighter%");
vo.setUser(user);
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
IUserDao userDao = session.getMapper(IUserDao.class);
List<User> users = userDao.findByVo(vo);
for(User u:users) {
System.out.println(u);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值