zoukankan      html  css  js  c++  java
  • mybatis传递参数的方法

    一.传递一个参数

    例:根据员工编号查询员工的基本信息

    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();
    }
    }
  • 相关阅读:
    FCKeditor的问题
    每天学习一点点(2010年二月)
    Excel使用小技巧
    JavaScript 取页面属性
    附加 数据库错误 5120
    CSS中元素水平居中显示的方法
    css中height:100%不起作用的解决方法
    SQL SERVER数据库开发之存储过程应用(转载)
    双路由器双小型交换机组建公司网络,2个公网IP上网案例(转载)
    如何解决VS2005没有代码智能提示(联想)的问题(转载)
  • 原文地址:https://www.cnblogs.com/duguangming/p/10883360.html
Copyright © 2011-2022 走看看