Mybatis中获取参数值的两种方式:${} 和 #{}
${}本质是字符串拼接
#{}本质是占位符赋值
1.1 mapper接口方法的参数为单个的字面变量类型(${} 和 #{}都可以用应该注意${}的''问题 应该用'${}')
Users getUserByUsername(String username);
select * from users where name = #{username}
public void testgetUserByUsername(){
SqlSession sqlsession = SQLsession.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
Users user = mapper.getUserByUsername("双");
System.out.println(user);
1.2 mapper接口方法的参数为多个的字面变量类型(${} 和 #{}都可以用应该注意${}的''问题 应该用'${}')
此时的mybatis会把参数放入到一个map集合中,可以用两种方式进行存储
a.可以通过arg0,arg1...为key,以参数为值
d.可以通过param1,param2...为key,以参数为值的形式获取
Users checkLogin(String username ,int age);
select * from users where name = #{arg0} and age = #{arg1}
public void testcheckLogin(){
SqlSession sqlsession = SQLsession.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
Users user = mapper.checkLogin("双双",22);
System.out.println(user);
1.3 若mapper方法的参数有多个时,可以手动放到一个map中存储
(${} 和 #{}都可以用应该注意${}的''问题 应该用'${}' 自己设置键值不是mybatis设置的)
Users checkLoginByMap(Map map);
select * from users where name = #{name} and age = #{age}
public void testcheckLoginByMap(){
SqlSession sqlsession = SQLsession.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
Users user = mapper.checkLoginByMap(map);
System.out.println(user);
1.4 mapper接口中方法的参数是实体参数
(${} 和 #{}都可以用 (以属性的方式访问属性值) 应该注意${}的''问题 应该用'${}')
int insertUsers(Users users);
insert into users values ('2022-08-16 12:15:23',null ,18,'小双双',22,'helen@sina.com',1,0)
public void testinsertUser(){
SqlSession sqlsession = SQLsession.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
int user = mapper.insertUsers(new Users(null,null ,1,"shang",12,"12233",0,0));
System.out.println(user);
1.5 命名参数@Param (${} 和 #{}都可以用应该注意${}的''问题 应该用'${}')
此时的mybatis会把参数放入到一个map集合中,可以用两种方式进行存储
a.可以通过@Param注解的值为key,以参数为值
d.可以通过param1,param2...为key,以参数为值的形式获取
Users checkLoginByParam(@Param("username")String name ,@Param("age")int age );
select * from users where name = #{username} and age = #{age}
public void testcheckLoginByParam(){
SqlSession sqlsession = SQLsession.getSqlsession();
UserMapper mapper = sqlsession.getMapper(UserMapper.class);
Users user = mapper.checkLoginByParam("双双",22);
System.out.println(user);