当前位置:Gxlcms > 数据库问题 > mybatis-sql语句传参

mybatis-sql语句传参

时间:2021-07-01 10:21:17 帮助过:21人阅读

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。

mybatis-sql语句传参

标签:int   actor   参数传递   接口   span   入参   one   测试方法   类型   

人气教程排行