zoukankan      html  css  js  c++  java
  • mybatis-sql语句传参

    MyBatis中的映射语句有一个parameterType属性来制定输入参数的类型。但是parameterType属性只可以写一个参数,所以如果我们想给映射语句传入多个参数的话,我们可以将所有的输入参数放到HashMap中,将HashMap传递给映射语句。

    其实就是把多个参数存到Map中,把Map当做一个参数再传给sql语句,mybaits收到后再解析Map集合拿到每一个参数。

    例如:

    <select id="searchCourses" parameterType="map" resultMap="CourseResult">
    SELECT * FROM COURSES 
    WHERE TUTOR_ID= #{tutorId} 
    AND NAME LIKE #{courseName} 
    </select>

    映射接口:

    public interface DynamicSqlMapper{ 
    List<Course> searchCourses(Map<String, Object> map); 
    }

    测试方法:

    @Test
    public void test_searchCourses1(){
    
    SqlSession sqlSession = null;
    try {
    sqlSession = MyBatisSqlSessionFactory.openSession();
    
    DynamicSqlMapper mapper = sqlSession.getMapper(DynamicSqlMapper.class);
    
    Map<String,Object> map = new HashMap<String,Object>(); 
    map.put("tutorId", 1); 
    map.put("courseName", "%Java%"); 
    List<Course> courses = mapper.searchCourses(map);
    
    courses.forEach(System.out::println);
    
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    同时MyBatis还提供了另外一种传递多个输入参数给映射语句的方法。

    例如我们想通过给定的name和email信息查找学生信息,定义查询接口如下:
    对于映射器中的方法,MyBatis默认从左到右给方法的参数命名为param1、param2…,依次类推。

    public interface StudentMapper{ 
                List<Student> findAllStudentsByNameEmail(String name, String email); 
    } 

    MyBatis支持将多个输入参数传递给映射语句,并以#{param}的语法形式引用它们:

    <select id="findAllStudentsByNameEmail" resultMap="StudentResult"> 
    select stud_id, name,email, phone from Students 
    where 
    name=#{param1} 
    and 
    email=#{param2} 
    </select> 

    这里#{param1}引用第一个参数name,而#{param2}引用了第二个参数email。

  • 相关阅读:
    难以理解的二分查找
    程序设计第七次作业——关于计算器的总结
    程序设计第六次作业——计算器(可视化界面)
    课堂作业——1025反转链表
    程序设计第五次作业——计算器(调用文件输入输出)
    circle area
    程序设计第四次作业——计算器第二步(计算)
    第三次作业代码规范修改
    解决Type 'UnityEngine.Component' does not support slicing
    mactype支持qq浏览器
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/11685550.html
Copyright © 2011-2022 走看看