1.将多个参数封装成一个类
缺点:虽然能进行,但如果每一次都创建一个类,那么类将会越来越多,这显然是不合适的
2.使用Map集合
在传值的时候传map的key值
ServiceImpl举例:
@Override
public Employee loginEmp(String name,Integer age) throws Exception {
SqlSession sqlSession=MyBatisUtil.getSession();
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Map map=new HashMap();
map.put("name",name);
map.put("age",age);
Employee employee=mapper.loginEmp(map);
sqlSession.commit();
sqlSession.close();
return employee;
}
3.使用@param注解的形式(重要)
@param的格式
public void Emp (@param("") String str)
本质上相当于存储一个键值对
在使用的时候调用@param里的值就能获得值
//Mapper中
public Employee loginEmp2(@Param("nameEmp")String name,@Param("ageEmp")Integer age)throws Exception;
//service中
//登录(@param注解形式)
public Employee loginEmp2(String name,Integer age)throws Exception;
//impl中
@Override
public Employee loginEmp2(String name, Integer age) throws Exception {
SqlSession sqlSession=MyBatisUtil.getSession();
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee=mapper.loginEmp2(name,age);
sqlSession.commit();
sqlSession.close();
return employee;
}
//Mapper.xml中
<!--登录@param()注解形式-->
<select id="loginEmp2" resultMap="employeeResultMap">
select
t_id,
t_name,
t_age,
t_birthday,
t_salary
from t_employee
where t_name=#{nameEmp} and t_age=#{ageEmp}
</select>