Mybatis传入参数(二)
一、传入参数
1.3 使用java对象作为方法参数
语法 #{属性名},使用java对象的属性值,作为参数实际值
//使用java对象作为接口方法的参数
List<Student> selectMultiObject(OueryParam param);
//中间的步骤和第一个案例一样,获取SqlSession对象调用访求方法,获取接口实现类,调用指定方法
//参数
OueryParam op = new OueryParam();
op.setParamName("张德帅");
op.setParamAge(18);
//调用studentDao的方法,执行数据库的操作
List<Student> students = mapper.selectMultiObject(op);
<!-- 使用java对象的属性值,作为参数实际值
使用对象语法:#{属性名,javaType=类型名称,jdbcType=数据类型}
javaType:指java中的属性数据类型。全限定名
jdbcType:在数据库中的数据类型.
例如: #{paramName,javaType=java.lang.String,jdbcType=VARCHAR}
我们使用的简化方式: #{属性名} ,javaType, jdbcType的值mybatis反射能获取。不用提供
-->
//这是没有简化的写法
<!--
<select id="selectMultiObject" resultType="com.apps.bean.Student">
select * from stu where name=#{paramName,javaType=java.lang.String,jdbcType=VARCHAR}
or age=#{paramAge,javaType=java.lang.Integer,jdbcType=INTEGER};
</select>
-->
//简化的写法
<select id="selectMultiObject" resultType="com.apps.bean.Student">
select * from stu where name=#{paramName} or age=#{paramAge};
</select>
1.4 多个参数使用位置
多个参数-简单类型,按位置传值
* mybatis 3.4前,使用#{0},#{1}
* mybatis 3.4后,使用#{arg0},#{arg1}
//接口
List<Student> selectMultiPosition(String name,Integer age);
//中间的步骤和第一个案例一样,获取SqlSession对象调用访求方法,获取接口实现类,调用指定方法
//调用studentDao的方法,执行数据库的操作
List<Student> students = mapper.selectMultiPosition("张德帅",18);
//多个参数使用位置
<select id="selectMultiPosition" resultType="com.apps.bean.Student">
select * from stu where name=#{arg0} or age=#{arg1};
</select>
1.5 多个参数使用Map集合
//接口
List<Student> selectMultiMap(Map<String, Object> map);
//中间的步骤和第一个案例一样,获取SqlSession对象调用访求方法,获取接口实现类,调用指定方法
//参数
Map<String, Object> map = new HashMap<String, Object>();
map.put("myname","张三");
map.put("myage",28);
//调用方法
List<Student> students = mapper.selectMultiMap(map);
//多个参数使用Map集合
<select id="selectMultiMap" resultType="com.apps.bean.Student">
select * from stu where name=#{myname} or age=#{myage};
//这里的#{myname}中的内容是map集合中的key,map的key唯一
</select>