• 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。

  • 相关阅读:
    〖Linux〗转换Socks Proxy为Http Proxy
    〖Linux〗Linux的smb地址转换Windows格式(两者互转)
    〖前端开发〗HTML/CSS基础知识学习笔记
    精确光源(Punctual Light Sources)
    面元间的能量传输
    pbr若干概念
    c# xml 输出注释格式控制
    unity, 立即生效动画:Animation.sample()
    unity, 在材质上指定render queue
    unity, shader, Tags的位置
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/11685550.html
Copyright © 2020-2023  润新知