MyBatis 传递参数:从 java 代码中把参数传递到 mapper.xml 文件
六、一个简单参数:
Dao 接口中方法的参数只有一个简单类型( java 基本类型和 String ),占位符 #{ 任意字符 } ,和方法的参数名无关。
6.1、sql映射文件,StudentDao.xml:
<!--namespace:命名空间,唯一值 ,推荐使用:dao 接口的全限定名称 -->
<mapper namespace="com.lifang.dao.StudentDao"><!--<select>: 表示查询操作, 标签中必须是 select 语句1、id: sql语句自定义的名称,唯一值,要求使用dao接口的方法名2、resultType: 推荐使用类的全限定名称--><select id = "selectStudentById" resultType = "com.lifang.domain.Student">select id,name,email,age from student where id = #{studentId}<!--由mybatis创建Student对象给属性赋值--></select>
6.2、StudentDao接口:
public interface StudentDao {//查询Student表中的所有数据:public List<Student> selectStudents();public int insertStudent(Student student);public Student selectStudentById(Integer id);
}
6.3、测试代码及结果:
@org.junit.Testpublic void test03(){SqlSession sqlSession = MybatisUtils.getSqlSession();StudentDao dao = sqlSession.getMapper(StudentDao.class);Student s = dao.selectStudentById(1002);System.out.println(s);}
七、parameterType介绍
思考:如何表示Dao接口方法的形参id是整型类型的呢?:
parameterType: 接口中方法参数的类型, 类型的完全限定名或者是Mybatis定义的别名。这个属性是可选的,因为 MyBatis 可以通过反射机制推断出Dao接口参数的数据类型,所以可以没有,我们一般不写:
<!--parameterType : dao接口中方法参数的数据类型。可以不写parameterType它的值是java的数据类型全限定名称或者是mybatis定义的别名例如 : parameterType="java,lang.IntegerparameterType="int--><select id = "selectStudentById" parameterType ="int" resultType = "com.lifang.domain.Student">select id,name,email,age from student where id = #{studentId}</select><select id = "selectStudentById" resultType = "com.lifang.domain.Student">select id,name,email,age from student where id = #{studentId}</select>
别名不是我创建的 是mybatis创建的 在mybatis文档有说明 中文官网 英文手册上也有
int 或 java.lang.Integerhashmap 或 java.util.HashMaplist 或 java.util.ArrayList ......<select>,<insert>,<update>,<delete>都可以使用 parameterType 指定类型。