目录
mybatis获取参数值的两种方式
mybatis获取参数值的两种方式:#{}和${}
#{}的本质是占位符 ,${}的本质是字符串的拼接
1.若mapper的接口方法的参数为单个的字面量类型
此时可以通过#{}和${}以任意的内容参数获取参数值,一定注意${}的单引号问题 '${}'
2.若mapper接口方法的参数为多个的字面量类型
此时mybatis会将参数放在map集合中,以两种方式存储数据
a,以arg0,arg1....为键,以参数为值
b,以param1,param2.....为键,以参数为值
因此,只需要通过#{}和${}访问map集合的键,就可以获取相应的值,一定注意${}的单引号问题 '${}'
3.若mapper接口方法的参数为map集合类型的参数
只需要通过#{}和${}访问map集合的键,就可以获取相应的值,一定注意${}的单引号问题 '${}'
4.若mapper接口方法的参数实体类中的属性名,就可以获取相对应的属性值,一定注意${}的单引号问题 '${}'
5.可以在mapper接口方法的参数上设置@param注解
此时mybatis会将这些参数放在map中,以两种方式进行存储
a,以@param注解的value属性值为键,以参数为值
b,以param1,param2 为键,以参数为值
只需要通过#{}和${}访问map集合的键,就可以获取相应的值,一定注意${}的单引号问题 '${}'
mybatis的各种查询
1.查询一个实体类对象
User getUserById(@param("id") int id);
2.查询一个list的集合
List <User> getUserList();
若sql语句查询的结果为多条时,一定不能以实体类类型作为方法的返回值,否则会抛出异常TooMangResultsException
若sql语句查询的结果为1时,此时可以使用实体类类型或list集合类型作为方法的返回值
3.模糊查询
select * from user where username like '%${ }%'
select * from user where username like concat('%',#{ },'%')
select * from user where username like "%"#{mohu}"%"
批量删除
delete from user where id in(${id})
动态设置表名
select * from ${tableName