##多个参数 使用@Param命名
<!--多个参数 使用@Param命名-->
<select id="selectMulitParam" resultType="com.bjpowernode.domain.Student">
select id,name,email,age from student where name=#{myname} or age=#{myage}
</select>
对象作为参数传输
对象作为参数传输
<!--多个参数 ,使用java对象的属性值,作为参数实际值
适用对象语法:#{属性名,javaType=类型名称,jdbcType=数据类型} 很少用
javaType:指Java中的属性数据类型
jdbcType:在数据库中的数据类型
例如#{ paramName,javaType=java.lang.String,jdbcType=varchar}
我们使用的是简化的方式 #{属性名},javaType的值mybatis反射能直接获取,不用提供
-->
<!-- <select id="selectMultiObject" resultType="com.bjpowernode.domain.Student">-->
<!-- select id,name,email,age from student where name=#{paraName,javaType=java.lang.String,jdbcType=VARCHAR}-->
<!-- or age=#{paramAge,javaType=java.lang.Integer,jdbcType=Integer}-->
<!-- </select>-->
<select id="selectMultiObject" resultType="com.bjpowernode.domain.Student">
select id,name,email,age from student where name=#{paraName}
or age=#{paramAge}
</select>
使用位置
/**
- 多个参数,简单的基本数据类型,按位置传值
- mybatis3.4之前使用#{0},#{1}
- mybatis3.4之后,使用#{arg0},#{arg1}
*/
@Test
public void selectMultiPostition() {
SqlSession sqlSession = MyBatisUntils.getSqlSession();
StudentDao mapper = sqlSession.getMapper(StudentDao.class);
List<Student> students = mapper.selectMultiPostition("王五", 28);
for (Student student : students) {
System.out.println(student);
}
}
map集合传参
<select id="selectMultiMap" resultType="com.bjpowernode.domain.Student">
select id,name,email,age from student where name=#{myname} or age=#{age}
</select>
@Test
public void selectMultiPosition() {
SqlSession sqlSession = MyBatisUntils.getSqlSession();
StudentDao mapper = sqlSession.getMapper(StudentDao.class);
Map<String,Object> map = new HashMap<>();
map.put("myname","张三");
map.put("age",28);
List<Student> students = mapper.selectMultiMap(map);
for (Student student : students) {
System.out.println(student);
}
}