通过Mybatis的使用,开发人员只需要专心提供SQL语句即可,这篇文章介绍了SQL语句中参数传递的问题。大致有以下几种方式:
1. 单个参数传递
//在接口中定义放法,参数形式如下
//使用单个参数
Student selectById(int id);
select * from student where id = #{id}
//调用方法时只需要传入相应类型的单个值即可
Student student = dao.selectById(2);
2. 使用@param为参数命名传递多个参数
/* 在接口文件的对应方法形参中,使用以下格式进行命名
* 多个参数:为参数命名,在形参前加上 @Param("自定义参数名")
* */
List selectMultiParam(@Param("myname") String name,
@Param("myage") Integer age);
//调用时传入对应的参数值
List students = dao.selectMultiParam("康康",23);
select * from student where name=#{myname} or age=#{myage}
3. 使用Java对象作为方法的参数
//在接口中定义放法,参数形式如下
//多个参数:使用java对象作为方法的参数
List selectMultiObject(QueryParam queryParam);
select * from student where name=#{queryName} or age=#{queryAge}
//调用时传入相应对象
List students = dao.selectMultiObject(queryParam);
4. 使用位置传参
在方法的参数中,形参的顺序对应映射文件中参数的顺序,arg0指形参中第一个值,arg1代表第二个,以此类推。
//在接口中定义放法,参数形式如下
//多个参数:使用位置传参
List selectMultiPosition(String name, Integer age);
select * from student where name=#{arg0} or age=#{arg1}
//调用代码
List students = dao.selectMultiPosition("康康", 23);
5. 使用map传参
//在接口中定义放法,参数形式如下
//使用Map传递多个参数
List selectMultiMap(Map map);
select * from student where name=#{mapName} or age=#{mapAge}
//调用
Map data = new HashMap();
data.put("mapName","krain");
data.put("mapAge",23);
List students = dao.selectMultiMap(data);
|