mapper与xml怎样映射
时间: 2024-01-28 15:05:28 浏览: 130
在MyBatis中,mapper和xml是通过命名空间(namespace)的方式进行映射的。在mapper接口中定义的方法,其方法名和参数列表需要和xml文件中定义的<sql>、<select>、<insert>、<update>、<delete>等标签的id和parameterType、resultType等属性相对应。同时,在mapper接口中也可以使用注解的方式进行映射,即@Select、@Insert、@Update、@Delete等注解。
在xml文件中,可以通过<mapper>标签的namespace属性指定命名空间,然后在命名空间下定义SQL语句。例如:
```
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" parameterType="java.lang.Integer" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
```
在上面的例子中,命名空间为com.example.mapper.UserMapper,定义了一个id为getUserById的查询语句,其参数类型为Integer,返回类型为User。
在mapper接口中,可以定义一个同名的方法getUserById,方法的参数类型和个数需要和xml文件中定义的查询语句的parameterType属性相同,且方法的返回类型需要和xml文件中定义的查询语句的resultType属性相同。例如:
```
public interface UserMapper {
User getUserById(Integer id);
}
```
在使用MyBatis时,通过SqlSession的getMapper方法获取mapper接口的实现类,然后就可以调用mapper接口中定义的方法来执行对应的SQL语句了。例如:
```
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
sqlSession.close();
```
在上面的例子中,通过getMapper方法获取了UserMapper接口的实现类,然后调用getUserById方法来执行查询语句,最后关闭SqlSession。
阅读全文