`
liyixing1
  • 浏览: 961763 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

session的getMapper方法解析

 
阅读更多
跟踪:
DefaultSqlSession类
public <T> T getMapper(Class<T> type) {
    return configuration.getMapper(type, this);
}

configuration的getMapper是
public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
    return mapperRegistry.getMapper(type, sqlSession);
  }

mapperRegistry的getMapper是
public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
    if (!knownMappers.contains(type))
      throw new BindingException("Type " + type + " is not known to the MapperRegistry.");
    try {
      return MapperProxy.newMapperProxy(type, sqlSession);
    } catch (Exception e) {
      throw new BindingException("Error getting mapper instance. Cause: " + e, e);
    }
  }
return MapperProxy.newMapperProxy(type, sqlSession);这句是创建接口的代理的。
进去可以看到
ClassLoader classLoader = mapperInterface.getClassLoader();
    Class<?>[] interfaces = new Class[]{mapperInterface};
    MapperProxy proxy = new MapperProxy(sqlSession);
    return (T) Proxy.newProxyInstance(classLoader, interfaces, proxy);

注意return这里,它是使用jse包的代理实现来做的。
分享到:
评论
2 楼 liyixing1 2012-09-24  
moment52 写道
那我要模拟这个实现改怎么写呢?

复制黏贴
1 楼 moment52 2012-09-21  
那我要模拟这个实现改怎么写呢?

相关推荐

    MyBatis 的执行流程.pdf

    - `XMLConfigBuilder`:解析`mybatis-config.xml`配置文件,调用`parse()`方法开始解析过程。 - `parseConfiguration()`:在`XMLConfigBuilder`中,调用该方法以解析全局配置文件的各个顶级节点,包括`&lt;mappers&gt;`。 ...

    MyBatis 的工作原理.pdf

    UserMapper mapper = session.getMapper(UserMapper.class); List&lt;User&gt; users = mapper.selectAllUsers(); ``` #### 四、解析全局配置文件 - 在全局配置文件中,主要包含了以下几个部分: - **environments**...

    ibatis入门例子

    UserMapper mapper = session.getMapper(UserMapper.class); List&lt;User&gt; users = mapper.selectAllUsers(); session.close(); ``` 6. **增删改操作**: 插入、更新和删除操作类似,只需要在Mapper接口和XML...

    mybatis的helloworld版

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(1); session.close(); ``` 5. **源码分析**: Mybatis的执行流程大致如下: - 创建SqlSessionFactory时,加载并...

    使用PoI读取Excel插入库的Demo

    DataInsertMapper mapper = session.getMapper(DataInsertMapper.class); for (Row row : sheet) { String value1 = row.getCell(0).getStringCellValue(); Double value2 = row.getCell(1).getNumericCellValue()...

    ibatis简单实例

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUserById(1); ``` 这里,`selectUserById`方法将在`UserMapper.xml`中找到对应的SQL,执行后返回查询结果。 6. **结果...

    MyBatis通过BATCH批量提交的方法

    CountryMapper mapper = session.getMapper(CountryMapper.class); // 假设有一个国家列表需要更新 List&lt;Country&gt; countries = ...; for (Country country : countries) { mapper.updateCountry(country); ...

    ibatis经典示例

    本篇将通过一个典型的iBatis示例,深入解析其核心概念、配置及使用方法。 ## 一、iBatis简介 iBatis起源于MyBatis的早期版本,它是一个轻量级的ORM(对象关系映射)框架,主要解决了在Java应用中操作数据库时的...

    ibatis单个对象的各种操作

    UserMapper mapper = session.getMapper(UserMapper.class); User user = new User("testUser", "123456"); mapper.insertUser(user); session.commit(); ``` 更新、删除和查询的操作类似,只需调用相应的Mapper...

    iBatis,带一小例子

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(1); // 处理查询结果... } catch (Exception e) { // 错误处理... } ``` 7. **事务管理**:默认情况下,SqlSession...

    Mybatisdemo

    UserMapper mapper = session.getMapper(UserMapper.class); return mapper.getUserById(id); } } } ``` 在实际项目中,还可以使用Spring框架与Mybatis集成,实现依赖注入和事务管理,简化上述代码。 综上所述...

    ibatis2.3.4 jar包

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById(1); session.commit(); ``` 动态SQL是Ibatis的一大亮点,它允许在XML映射文件中编写条件语句,使得SQL能够根据Java对象...

    ibaties学习笔记(一)

    TestMapper mapper = session.getMapper(TestMapper.class); User user = mapper.selectUser(1); ... } ``` 本篇笔记的【标签】“源码”和“工具”提示我们关注iBATIES的内部实现和实际应用。学习iBATIES不仅可以...

    IBatisDemo:Ibatis的一个简单Demo

    var userMapper = session.GetMapper(); var user = userMapper.SelectUserById(1); } ``` **6. 事务管理** IBatis支持自动和手动的事务管理。在上面的例子中,`Managed`类型的事务管理器会使用.NET的托管事务。...

    ibatis API

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUser(1); ``` ### 4. 动态SQL Ibatis支持动态SQL,可以在XML中使用条件判断、循环等逻辑,极大地提高了SQL的灵活性。 ```xml ...

    mybatis调用存储过程

    YourMapper mapper = session.getMapper(YourMapper.class); mapper.callProcedure(params); session.commit(); ``` 注意,如果存储过程有输出参数,可以在调用后从Map中获取其值。 4. 参数类型和映射 MyBatis允许...

    mybaties配置

    接着,通过 `getMapper` 方法获取了 `UserDao` 接口的代理实例,并调用了其中的方法来执行 SQL 查询操作。 通过以上步骤,我们可以成功地构建一个使用 MyBatis 的 Java Web 工程,并实现了基本的数据库操作。这种...

    crawler-jsoup-demo:使用jsoup构建爬虫程序

    MedicalDataMapper mapper = session.getMapper(MedicalDataMapper.class); mapper.insertMedicalData(data); session.commit(); ``` **五、数据存储与处理** 在实际项目中,可能需要对爬取的数据进行预处理,如...

    ibatis技术

    UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById("1"); session.close(); ``` **四、Ibatis 与其他持久层框架对比** 与Hibernate等全对象关系映射(ORM)框架相比...

Global site tag (gtag.js) - Google Analytics