开发碎片知识

@Param注解的用法解析与parameterType

2021-05-27  本文已影响0人  Gema玩家

1.parameterType 处理 MyBatis的参数映射配置

前端传的参数,mybatis如何绑定,从而操作数据库,则用到parameterType,MyBatis的参数映射利用的属性是:parameterType。这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数。

2.简单类型,不需要设置 parameterType

大多数情况,参数是一般数据类型且单一时,我们都不用parameterType,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数。



上面的这个示例说明了一个非常简单的命名参数映射。鉴于参数类型(parameterType)会被自动设置为 int,这个参数可以随意命名。

3、复杂类型,需要设置 parameterType

原始类型或简单数据类型(比如 Integer 和 String)因为没有其它属性,会用它们的值来作为参数,不需要设置 parameterType。 然而,如果传入一个复杂的对象,行为就会有点不一样了。比如:



此时需要 User 类型的参数对象传递到了语句中,会查找 id、username 和 password 属性,然后将它们的值传入预处理语句的参数中。

另外,还可以使用 map 传递,这是最原始的用法。定义接口使用map传递多个参数进行查询,如下所示:



sql语句



需要注意的有:
1、parameterType参数类型为map(此处使用别名)

2、参数名称是map中的key

4、复杂类型,使用注解传递参数,不需要设置 parameterType

创建接口,使用注解传递多个参数进行查询



这种方式不需要设置参数类型 ,参数名称为注解定义的名称。这种方式能够大大提高可读性,但是只适合参数较少的情况,一般是少于5个用此方法

5、小结

在不使用@Param注解的时候,函数的参数只能为一个,并且在查询语句取值时只能用#{}。如果想传递多个参数,parameterType参数类型为map(此处为别名)或者为JavaBean。

而使用@Param注解则可以使用多个参数,无需再设置parameterType,并且在查询语句中使用时可以使用#{}或者${}

上一篇 下一篇

猜你喜欢

热点阅读