用于指定传入参数的类型,如果传入一个类的对象,所以类型就写类的全限定名称。
该属性的取值可以 是基本类型、引用类型(例如:String 类型)、还可以是实体类类型(POJO 类)。同时也可以使用实体类的包装类。
mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名, 而我们的是实体类并没有注册别名,所以必须写全限定类名。
在 mybatis 的官方文档也是可以查看的:
别名映射的类型_bytebyte_longlong_shortshort_intint_integerint_doubledouble_floatfloat_booleanbooleanstringStringbyteBytelongLongshortShortintIntegerinegerIntegerdoubleDoublefloatFloatbooleanBooleandateDatedecimalBigDecimalbigdecimalBigDecimal包装对象作为参数
需求:根据用户名查询用户信息,查询条件放到 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已经提供了属性所属的类,就不需要在使用对象名