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.Test
public 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.Integer
parameterType="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 指定类型。