Mybatis 的参数深入

parameterType 配置参数 

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

该属性的取值可以 是基本类型引用类型(例如:String 类型)、还可以是实体类类型(POJO 类)。同时也可以使用实体类的包装类。

 mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名, 而我们的是实体类并没有注册别名,所以必须写全限定类名。

在 mybatis 的官方文档也是可以查看的:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
inegerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

包装对象作为参数 

需求:根据用户名查询用户信息,查询条件放到 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已经提供了属性所属的类,就不需要在使用对象名


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值