mybatis中 MAPPER接口中定义的接口方法是如何实现的?
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) 这是一种什么用法,请讲解一下。
...全文
相关推荐
Mybatis Mapper接口工作原理实例解析
但是,对于 Mapper 接口,我们并没有编写其实现类!Mybatis 是如何找到其实现类,进而完成具体的 CRUD 方法调用的呢?原理何在?
MyBatis通用Mapper实现原理及相关内容
在通用Mapper定义的实现方法中,提供了`MappedStatement`作为参数,有了这个参数,我们就可以根据ms的id(规范情况下是接口名.方法名)得到接口,通过接口的泛型可以获取实体类(entityClass
Mybatis mapper接口动态代理开发步骤解析
其中,Mapper 接口动态代理是 Mybatis 的一个重要特性,它允许开发者使用接口来定义数据库操作,而不需要编写具体的实现代码。
Mybatis一对多关联关系映射实现过程解析
Mapper接口设计--------------在Mybatis中,我们可以通过Mapper接口来定义数据访问层的接口。例如,在用户和订单之间的一对多关系中,我们可以定义用户Mapper接口。
spring boot整合mybatis利用Mysql实现主键UUID的方法
`tk.mybatis.mapper.common.IdsMapper`则提供了处理主键ID的基本操作。在Mapper接口中,你可以像平常一样定义CRUD方法。


Web 开发
