- 浏览: 959297 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
跟踪:
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包的代理实现来做的。
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包的代理实现来做的。
发表评论
-
深入了解MyBatis参数
2017-05-04 21:12 386深入了解MyBatis参数 http://blog.csdn ... -
MyBatis Generator 详解
2015-08-03 14:00 762http://blog.csdn.net/isea533/ar ... -
ibatis的动态sql
2014-10-23 13:33 938位于包 com.ibatis.sqlmap.engine.ma ... -
枚举 enum
2013-12-13 17:28 2593当使用枚举时,需要使用EnumTypeHandler或者Enu ... -
mybatis generator tools配置文件解析
2012-12-20 23:28 25413这是mybatis3 generator 配 ... -
问题解决方案
2011-08-22 00:25 24221.Mapped Statements collection ... -
mybatis的参数
2011-06-16 12:36 6429在类DynamicSqlSource 方法 public Bo ... -
与spring结合
2011-05-20 21:58 1238实体省略 maping文件省略 dao接口省略 mybatis ... -
动态sql
2011-05-05 17:54 1262ibatis支持动态的组合sql。 包括动态元素 if ... -
ibatis缓存
2011-05-05 16:38 4508ibatis的session缓存。做了一个测试 <?xm ... -
ibatis官方推荐目录结构
2011-05-05 13:24 1060src/com.liyixing.application.da ... -
sql映射文件
2011-04-30 22:09 2555<?xml version="1.0" ... -
配置文件
2011-04-30 20:17 1805mybatis的配置文件结构 顶级是configuration ... -
一个简单例子,以及基于接口,class对象调用
2011-04-30 16:59 1326应用结构: IbatisConfiguration.xm ... -
范围和声明周期(对象声明周期)
2011-04-29 23:19 1349先看mybatis用户手册中的一段代码 DataSource ...
相关推荐
- `XMLConfigBuilder`:解析`mybatis-config.xml`配置文件,调用`parse()`方法开始解析过程。 - `parseConfiguration()`:在`XMLConfigBuilder`中,调用该方法以解析全局配置文件的各个顶级节点,包括`<mappers>`。 ...
UserMapper mapper = session.getMapper(UserMapper.class); List<User> users = mapper.selectAllUsers(); ``` #### 四、解析全局配置文件 - 在全局配置文件中,主要包含了以下几个部分: - **environments**...
UserMapper mapper = session.getMapper(UserMapper.class); List<User> users = mapper.selectAllUsers(); session.close(); ``` 6. **增删改操作**: 插入、更新和删除操作类似,只需要在Mapper接口和XML...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(1); session.close(); ``` 5. **源码分析**: Mybatis的执行流程大致如下: - 创建SqlSessionFactory时,加载并...
DataInsertMapper mapper = session.getMapper(DataInsertMapper.class); for (Row row : sheet) { String value1 = row.getCell(0).getStringCellValue(); Double value2 = row.getCell(1).getNumericCellValue()...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUserById(1); ``` 这里,`selectUserById`方法将在`UserMapper.xml`中找到对应的SQL,执行后返回查询结果。 6. **结果...
本篇将通过一个典型的iBatis示例,深入解析其核心概念、配置及使用方法。 ## 一、iBatis简介 iBatis起源于MyBatis的早期版本,它是一个轻量级的ORM(对象关系映射)框架,主要解决了在Java应用中操作数据库时的...
UserMapper mapper = session.getMapper(UserMapper.class); User user = new User("testUser", "123456"); mapper.insertUser(user); session.commit(); ``` 更新、删除和查询的操作类似,只需调用相应的Mapper...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUser(1); // 处理查询结果... } catch (Exception e) { // 错误处理... } ``` 7. **事务管理**:默认情况下,SqlSession...
UserMapper mapper = session.getMapper(UserMapper.class); return mapper.getUserById(id); } } } ``` 在实际项目中,还可以使用Spring框架与Mybatis集成,实现依赖注入和事务管理,简化上述代码。 综上所述...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById(1); session.commit(); ``` 动态SQL是Ibatis的一大亮点,它允许在XML映射文件中编写条件语句,使得SQL能够根据Java对象...
TestMapper mapper = session.getMapper(TestMapper.class); User user = mapper.selectUser(1); ... } ``` 本篇笔记的【标签】“源码”和“工具”提示我们关注iBATIES的内部实现和实际应用。学习iBATIES不仅可以...
var userMapper = session.GetMapper(); var user = userMapper.SelectUserById(1); } ``` **6. 事务管理** IBatis支持自动和手动的事务管理。在上面的例子中,`Managed`类型的事务管理器会使用.NET的托管事务。...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUser(1); ``` ### 4. 动态SQL Ibatis支持动态SQL,可以在XML中使用条件判断、循环等逻辑,极大地提高了SQL的灵活性。 ```xml ...
YourMapper mapper = session.getMapper(YourMapper.class); mapper.callProcedure(params); session.commit(); ``` 注意,如果存储过程有输出参数,可以在调用后从Map中获取其值。 4. 参数类型和映射 MyBatis允许...
接着,通过 `getMapper` 方法获取了 `UserDao` 接口的代理实例,并调用了其中的方法来执行 SQL 查询操作。 通过以上步骤,我们可以成功地构建一个使用 MyBatis 的 Java Web 工程,并实现了基本的数据库操作。这种...
MedicalDataMapper mapper = session.getMapper(MedicalDataMapper.class); mapper.insertMedicalData(data); session.commit(); ``` **五、数据存储与处理** 在实际项目中,可能需要对爬取的数据进行预处理,如...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.getUserById("1"); session.close(); ``` **四、Ibatis 与其他持久层框架对比** 与Hibernate等全对象关系映射(ORM)框架相比...
UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.selectUserById(1); System.out.println(user); } ``` 四、Ibatis的优势 - SQL定制:允许开发者编写复杂的SQL语句,不受ORM限制...