4.MyBatis获取参数的两种方式
MyBatis获取参数的两种方式:${}和#{}
#{}的本质时占位符赋值,${}的本质时字符串拼接
1)若mapper接口方法的参数为单个的字面量类型
此时可以通过#{}和 以任意的内容获取参数值,一定要注意 {}以任意的内容获取参数值,一定要注意 以任意的内容获取参数值,一定要注意{}的单引号问题
user getUserByUserName(String username);
<select id="getUserByUserName()" resultType="user">
select * from t_user where username = #{username}
</select>
2)若mapper接口方法的参数为多个的字面量类型
此时MyBatis会将参数放在map集合中,以两种方式存储数据
(1) 以arge0,arge1…为键,以参数为值
(2) 以param1,param2…为键,以参数为值
因此,只需要通过#{}和${}访问map集合的键,就可以获取相应的值
<!-- user getUserByNameAndPassword(String username,String password)-->
<select id="getUserByNameAndPassword" resultType="user">
select *from t_user where username = #{param1} and password = #{param2}
</select>
3)若mapper接口方法的参数为map类型
4)和5)中的底层原理就是3)
4)若mapper接口中的方法参数为实体类类型的参数
只需要通过#{}和${}访问实体类中的属性名,就何以获取相应的属性值
<!-- int insertUser(user user);-->
<insert id="insertUser" >
insert into t_user values(#{id},#{username},#{password},#{age},#{gender},#{email})
</insert>
5)在mapper接口方法参数上设置@Param注解(常用)
此时MyBatis会将这些参数放在map中,以两种方式进行存储
1.@Param注解的value属性为键,以参数为值
2.以param1,param2…为键,以参数为值
<!-- user getUserByParam(@Param("username") String username,@Param("password") String password)-->
<select id="getUserByParam" resultType="user">
select *from t_user where username = #{username} and password = #{password}
</select>