以 "type safe" 方式做某事是什么意思?
What does it mean to do something in a "type safe" way?
可以使用 <update>
在 Mapper XML 文件中配置 UPDATE 语句
元素如下:
<update id="updateStudent" parameterType="Student">
UPDATE STUDENTS SET NAME=#{name}, EMAIL=#{email}, PHONE=#{phone}
WHERE STUD_ID=#{studId}
</update>
我们可以调用这个语句如下:
int noOfRowsUpdated =
sqlSession.update("com.mybatis3.mappers.StudentMapper.updateStudent",
student);
不是使用命名空间和语句 ID 调用映射语句,而是
可以创建一个Mapper接口并以"type safe"的方式调用方法如下:
package com.mybatis3.mappers;
public interface StudentMapper
{
int updateStudent(Student student);
}
您可以使用 Mapper 接口调用 updateStudentstatement,如下所示:
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int noOfRowsUpdated = mapper.updateStudent(student);
我的问题是:为什么是第二种方式"type safe"?这里的 "type safe" 是什么意思?
它是 type-safe
因为 type-mismatch
错误将在编译时而不是运行时检测到。
在第一个示例中,您可以将任何非 Student
类型的 Object
传递给更新方法,它可以正常编译但在运行时会失败。
在第二个示例中,您必须传递一个有效的 Student
对象,否则代码将无法编译,因此被视为 type-safe
。
可以使用 <update>
在 Mapper XML 文件中配置 UPDATE 语句
元素如下:
<update id="updateStudent" parameterType="Student">
UPDATE STUDENTS SET NAME=#{name}, EMAIL=#{email}, PHONE=#{phone}
WHERE STUD_ID=#{studId}
</update>
我们可以调用这个语句如下:
int noOfRowsUpdated =
sqlSession.update("com.mybatis3.mappers.StudentMapper.updateStudent",
student);
不是使用命名空间和语句 ID 调用映射语句,而是 可以创建一个Mapper接口并以"type safe"的方式调用方法如下:
package com.mybatis3.mappers;
public interface StudentMapper
{
int updateStudent(Student student);
}
您可以使用 Mapper 接口调用 updateStudentstatement,如下所示:
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int noOfRowsUpdated = mapper.updateStudent(student);
我的问题是:为什么是第二种方式"type safe"?这里的 "type safe" 是什么意思?
它是 type-safe
因为 type-mismatch
错误将在编译时而不是运行时检测到。
在第一个示例中,您可以将任何非 Student
类型的 Object
传递给更新方法,它可以正常编译但在运行时会失败。
在第二个示例中,您必须传递一个有效的 Student
对象,否则代码将无法编译,因此被视为 type-safe
。