Mybatis传入参数(一)
一、传入参数
从java代码中把数据传入到mapper文件的sql语句中,上个文章我们讲过,mybatis可以动态生成dao接口的实现类。那么我们在调用这个实现类的方法时,一定会有方法要传参使用,mybatis对于传参也有操作,下面将举例:
1.1 一个简单类型的参数
简单类型: mybatis把java的基本数据类型和String都叫简单类型。在mapper文件获取简单类型的一个参数的值,使用 #{任意字符}
如:
//接口:
Student selectStudent(int i);
//通过SqlSession对象的getMapper()方法,获得接口的实现类
StudentDao studentDao= sqlSession.getMapper(StudentDao.class);
// 注:StudentDao.class为接口的类对象
//调用studentDao的方法,执行数据库的操作
Student selectStudent = studentDao.selectStudent(1001);
//这时将会使用mapper文件的sql语句了,sql语句是
<select id="selectStudent" parameterType="int" resultType="com.apps.bean.Student">
select * from stu where id=#{i};
//#{i}中的内容i可以是任意字符,因为这个方法只有一个参数,同时参数类型也是简单类型
</select>
<!-- parameterType:写在mapper文件中的 一个属性。 表示dao接口中方法的参数的数据类型。
parameterType它的值是java的数据类型全限定名称或者是mybatis定义的别名
例如:全限定名称:java.lang.Integer
别名:int
注意:parameterType不是强制的,mybatis通过反射机制能够发现接口参数的类型。
-->
1.2 多个简单类型的参数
使用@Param命名参数
如:
//接口
List<Student> selectMulitParam(@Param("myname") String name, @Param("myage") Integer age)
// 格式 (@Param("参数名") String 形参名),中的参数名可以是任意字符,只要这个参数名在mapper文件使用时一样就行。
//中间的步骤和第一个案例一样,获取SqlSession对象调用访求方法,获取接口实现类,调用指定方法
List<Student> students = mapper.selectMulitParam("张德帅", 18);
//mapper文件:
<select>
select * from student where name=#{myname} or age=#{myage}
//这里的#{myname}的内容,要和接口中方法参数中@Param("myname")中的内容对应
</select>