MyBatis中使用实体类的包装对象作为查询条件

MyBatis中使用实体类的包装对象作为查询条件

# OGNL表达式

接下来,我们来学习 OGNL表达式 。内容如下:

 

回顾一下:

parameterType的功能:

存放基本数据类型

存放pojo(java.bean中的实体类型)

------

OGNL 表达式:

概述:全称(Object Graphic Navigation Language)对象 图 导航 语言

作用:通过对象的取值方式来获取数据,在写法上把get给省略了。

比如:我们获取用户名称的时候

类中的写法:user.getUsername();

OGNL表达式写法:user.username;

------

所以 为啥就是mybatis中为啥能够直接写username,而不用写user呢?

原因就是在parameterType中已经提供了属性所属的类,所以此时不需要写对象名。

 

# 传递pojo(实体类)包装对象

什么是pojo,pojo就是实体类的意思。

在实际开发过程中,查询条件是综合的查询条件,不仅包括 用户查询条件 还包括其它的查询条件(比如用户购买的商品信息作为查询条件)。

思考:如何将 对象 作为查询参数,进行数据查询呢?

这里就需要使用到 Pojo 类中包含 pojo 的技术,来实现。

 

# 需求:根据用户名查询用户信息,查询条件放到QueryVo的user属性中。

在domian --> QueryVo.java类

 

代码如下:

-----

public class QueryVo {

private User user;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

}

-----

IUserDao接口:

-----

/**

* 根据queryVo中的条件查询用户

* @param vo

* @return

*/

List<User> findUserByVo(QueryVo vo);

-----

IUserDao.xml文件配置如下:

-----

<!--根据queryVo条件查询用户-->

<select id="findUserByVo" parameterType="com.abc2.domain.QueryVo" resultType="com.abc2.domain.User">

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

</select>

-----

测试类:

-----

@Test

public void findUsersByVo() {

QueryVo queryVo = new QueryVo();

User user = new User();

user.setUsername("%王%");

queryVo.setUser(user);

List<User> users = userDao.findUserByVo(queryVo);

System.out.println("-------");

for (User item : users) {

System.out.println(item);

}

System.out.println("-------");

}

-----

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值