parameterType: dao层接口中方法参数的类型, 类型的完全限定名或别名这个属性是可选的,因为 MyBatis 可以推断出具体传入语句的参数,默认值为未设置 (unset)接口中方法的参数从 java 代码传入到 mapper 文件的 sql 语句<select>,<insert>,<update><delete>都可以使用 parameterType 指定类型,今天小编就来说说关于mybatis中set标签使用场景?下面更多详细答案一起来看看吧!
mybatis中set标签使用场景
parameterType: dao层接口中方法参数的类型, 类型的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以推断出具体传入语句的参数,默认值为未设置 (unset)。接口中方法的参数从 java 代码传入到 mapper 文件的 sql 语句。<select>,<insert>,<update><delete>都可以使用 parameterType 指定类型。
说完了parameterType属性的作用,我们看看具体使用情况;
1、一个简单参数:Dao 接口中方法的参数只有一个简单类型(java 基本类型和 String),占 位符 #{ 任意字符 },和方法的参数名无关。
接口方法: Student selectById(int id);
mapper 文件:
select id,name,email,age from student where id=#{studentId}
#{studentId} , studentId 是自定义的变量名称,和方法参数名无关。
说直白点就是:当一个dao接口的方法只有一个简单类型参数的时候,那么mapper文件里面对应的sql语句的占位符可以随便写,可以写任意字符;
2、多个简单类型参数 - 使用@Param:当 Dao 接口方法多个参数,需要通过名称使用参数。 在方法形参前面加 入@Param(“自定义参数名”),mapper 文件使用#{自定义参数名}。 例如定义 List selectStudent( @Param(“personName”) String name ) { … } mapper 文件 select * from student where name = #{ personName}
List selectMultiParam(@Param("personName") String name, @Param("personAge") int age);
mapper 文件:
select id,name,email,age from student where name=#{personName} or age =#{personAge}
3、多个参数-按位置:参数位置从 0 开始, 引用参数语法 #{ arg 位置 } , 第一个参数是#{arg0}, 第二个是#{arg1} 注意:mybatis-3.3 版本和之前的版本使用#{0},#{1}方式, 从 mybatis3.4 开始使用#{arg0}方式。
接口方法: List selectByNameAndAge(String name,int age);
mapper 文件
select id,name,email,age from student where name=#{arg0} or age =#{arg1}
这里没有讲解对象和map传值,应为这两个在工作中都是非常常用的,所以大家一定清楚怎么使用的;需要强调的是parameterType这个属性是可以省掉不写的,应为mapper文件中的namespace就是接口的全限定名称,sql语句的id就是接口的方法,那么通过反射机制mybatis完全可以获取到接口参数的类型,所有我们也可以不写parameterType属性;
,