首页 > 数据库技术 > 详细

mybatis-sql语句传参

时间:2019-10-16 20:51:23      阅读:69      评论:0      收藏:0      [点我收藏+]

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。

mybatis-sql语句传参

原文:https://www.cnblogs.com/Magic-Li/p/11685550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!