parameterType 配置参数
用于指定传入参数的类型,如果传入一个类的对象,所以类型就写类的全限定名称。
该属性的取值可以 是基本类型、引用类型(例如:String 类型)、还可以是实体类类型(POJO 类)。同时也可以使用实体类的包装类。
mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名, 而我们的是实体类并没有注册别名,所以必须写全限定类名。
在 mybatis 的官方文档也是可以查看的:
别名 | 映射的类型 |
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
ineger | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
包装对象作为参数
需求:根据用户名查询用户信息,查询条件放到 QueryVo 的 user 属性中。
如下:
public class QueryVo implements Serializable {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
在接口中:
public interface IUserDao {
List<User> findByVo(QueryVo vo);
}
<selectid="findByVo"resultType="com.YCy.domain.User"parameterType="com.Ycy.domain.QueryVo">
select * from user where username like #{user.username};
</select>
ognl 表达式:
它是 apache 提供的一种表达式语言,
全称是: Object Graphic Navigation Language
对象图导航语言
它是按照一定的语法格式来获取数据的。
语法格式就是使用 #{对象.对象}的方式
#{user.username}它会先去找 user 对象,然后在 user 对象中找到 username 属性,并调用 getUsername()方法把值取出来。但是我们在 parameterType 属性上指定了实体类名称,所以可以省略 user. 而直接写 username。
如果直接是一般的属性,如User类中有一个username属性,我们把User作为对象传入参数,我们直接使用,#{username},
因为parameterType已经提供了属性所属的类,就不需要在使用对象名