mybatis中 MAPPER接口中定义的接口方法是如何实现的?

eisldkw eisldkw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


1、PersonMapper.java 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace指用户自定义的命名空间。 -->

<mapper namespace="org.fkit.mapper.PersonMapper">

<!-- 根据id查询Person,返回resultMap -->
<select id="selectPersonById" parameterType="int" resultMap="personMapper">
SELECT * from tb_person where id = #{id}
</select>

<!-- 映射Peson对象的resultMap -->
<resultMap type="org.fkit.domain.Person" id="personMapper">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="age" column="age"/>

</resultMap>

</mapper>

2、PersonMapper.java 文件内容如下:
package org.fkit.mapper;
import org.fkit.domain.Person;

public interface PersonMapper
{
Person selectPersonById(Integer id);
}

3、OneToOneTest.java 文件内容如下:
package org.fkit.test;

public class OneToOneTest {

public static void main(String[] args) throws Exception {

// 读取mybatis-config.xml文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

// 初始化mybatis,创建SqlSessionFactory类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 创建Session实例
SqlSession session = sqlSessionFactory.openSession();

PersonMapper pm = session.getMapper(PersonMapper.class);
// 直接调用接口的方法,查询id为1的Peson数据
Person p = pm.selectPersonById(1);


}

}


请问:

1、 Person p = pm.selectPersonById(1) 这个用法中 PersonMapper.java 类中只声明了 selectPersonById 方法 但是没有定义 selectPersonById 呀。它是如何实现的,请讲解一下原理。

2、PersonMapper pm = session.getMapper(PersonMapper.class) 这是一种什么用法,请讲解一下。

...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
eisldkw
Web 开发 81,108 成员 341,721 内容