Mybatis 的参数深入

    科技2022-07-14  117

    parameterType 配置参数 

    用于指定传入参数的类型,如果传入一个类的对象,所以类型就写类的全限定名称。

    该属性的取值可以 是基本类型、引用类型(例如: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已经提供了属性所属的类,就不需要在使用对象名

     

    Processed: 0.011, SQL: 8