mybatis获取参数值的两种方式
#{}:占位符
${}:字符串拼接
情况一
mapper接口方法的参数为单个的字面量类型
两种都行
例如通过名字查询用户
select * from t_user whhere username=${username}
select * from t_user whhere username='#{username}'
情况二mapper接口的参数有多个的时候
select * from t_user whhere username=#{username} and password=#{password}
报错:‘username’ not found
mybatis 会把参数放到map集合中,然后arg0 arg1 为键,以参数为值。或者以param1,param2为键,参数为值。也可以混着用。应该改为arg0,arg1…
select * from t_user whhere username=${username} and password=${password}
需手动加上单引号
情况三若mapper接口方法的参数有多个的时候,可以手动将这些参数放在一个map中存储
参数为一个集合map
接口:User CheckLoginByMap(Map<String,Object>,map)
xml文件:
<select id = "CheckLoginByMap" resultType="User">
select * from t_user whhere username=#{username} and password=#{password}
</select>
在测试类上:
map.put(“username”,"admin)
map.put(“password”,“12345”)
情况四mapper参数为实体类类型的参数[最常用的方式]
跟map形式一样
int insertUser(User user)
<insert id = "insertUser">
insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
</insert>
使用@param注解命名参数
验证登录
User CheckLoginByParam(@param("username") String username,@param("password") String password)
<select id = "CheckLoginByMap" resultType="User">
select * from t_user whhere username=#{username} and password=#{password}
</select>