一.传递一个参数
例:根据员工编号查询员工的基本信息
1.在dao接口中声明一个方法
2.在mapper中实现该方法
3.测试
/** * 传递一个参数 */ public class Test02 { public static void main(String[] args) { //获取SqlSession对象 SqlSession session = SqlSessionFactoryUtil.getSession(); //获取dao接口的实现类对象 EmpDao empDao = session.getMapper(EmpDao.class); //调用empDao的方法 Emp emp = empDao.findByEmpno(7902L); //输出结果 System.out.println("员工编号:"+emp.getEmpno()); System.out.println("员工姓名:"+emp.getEname()); System.out.println("员工基本工资:"+emp.getSal()); ///关闭session session.close(); } }
二.传递多个参数
第一种:使用注解传参
1.声明方法
2.mapper中实现方法
注意:不能再使用#{}传递参数了。
3.测试
/** * 传递多个参数 使用@Param的方式 */ public class Test04 { public static void main(String[] args) { //获取SqlSession对象 SqlSession session = SqlSessionFactoryUtil.getSession(); //获取dao接口的实现类对象 EmpDao empDao = session.getMapper(EmpDao.class); //调用empDao的方法 List<Emp> emps = empDao.findByExample1("M",900D); //输出结果 for (Emp emp : emps) { System.out.println("员工编号:"+emp.getEmpno()); System.out.println("员工姓名:"+emp.getEname()); System.out.println("员工基本工资:"+emp.getSal()); System.out.println("==="); } ///关闭session session.close(); } }
***#{}和${}有什么区别?
#{}在传递参数的时候底层使用的占位符的方式传参,你可以简单理解为在传参的时候默认会在参数外加一个引
号,一般建议使用这种传参方式。
${}在传参的时候底层实际上使用的拼接sql的方式,有的时候像模糊查询必须采用这种传参方式。但是在使用${}传
参的时候需要在dao接口方法的形参前加一个@Param的注解。
第二种:使用map封装多个参数
1.声明方法
2.在mapper中实现方法
3.测试
/** * 传递多个参数 使用Map封装多个参数 */ public class Test05 { public static void main(String[] args) { //获取SqlSession对象 SqlSession session = SqlSessionFactoryUtil.getSession(); //获取dao接口的实现类对象 EmpDao empDao = session.getMapper(EmpDao.class); //调用empDao的方法 Map<String,Object> map = new HashMap<String,Object>(); //把需要传递的多个参数封装到map中 map.put("ename","M"); map.put("sal",900D); List<Emp> emps = empDao.findByExample2(map); //输出结果 //输出结果 for (Emp emp : emps) { System.out.println("员工编号:"+emp.getEmpno()); System.out.println("员工姓名:"+emp.getEname()); System.out.println("员工基本工资:"+emp.getSal()); System.out.println("==="); } ///关闭session session.close(); } }
第三种:按位置传参
1.声明方法
2.在mapper中实现方法
注意:按位置传参,参数下标从1开始
3.测试
第四种:按模型的方式传参(实体类)
1.声明方法
2.在mapper中实现方法
3.测试
/** * 传递多个参数 按模型的方式 */ public class Test07 { public static void main(String[] args) { //获取SqlSession对象 SqlSession session = SqlSessionFactoryUtil.getSession(); //获取dao接口的实现类对象 EmpDao empDao = session.getMapper(EmpDao.class); //调用empDao的方法 Emp param = new Emp(); //把需要传递的多个参数封装到Emp对象中 param.setEname("M"); param.setSal(900D); List<Emp> emps = empDao.findByExample4(param); //输出结果 //输出结果 for (Emp emp : emps) { System.out.println("员工编号:"+emp.getEmpno()); System.out.println("员工姓名:"+emp.getEname()); System.out.println("员工基本工资:"+emp.getSal()); System.out.println("==="); } ///关闭session session.close(); } }