- 浏览: 1051518 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
多个项目中使用ibatis , 和数据库表对应的 sqlmap文件(增删改查等基本语句),dao, pojo 都是由工具自动生成的, 现在将这些自动生成的文件放在一个单独的工程中,其它项目工程中通过jar包来引用 ,并通过"继承"为基础的sqlmap文件,dao,pojo 添加新的方法来满足项目需求。 dao,pojo等java文件的继承好说, sqlmap文件如何能“继承“呢 ?
简单演示如下,sqlmap文件"继承"的说法并不恰当(比如不支持重载), 说sqlmap文件"合并"可能更合适
sql-map-config.xml
- <sqlMapConfig>
- <settings useStatementNamespaces="true"/>
- <sqlMap resource="UserSQL.xml" />
- <sqlMap resource="com/test/sqlmaps/UserSQL.ext.xml" />
- </sqlMapConfig>
<sqlMapConfig> <settings useStatementNamespaces="true"/> <sqlMap resource="UserSQL.xml" /> <sqlMap resource="com/test/sqlmaps/UserSQL.ext.xml" /> </sqlMapConfig>
UserSQL.xml 是user表基础的sqlmap文件 , 包含了增删改查的基本方法, 还有一个ResultMap
- <sqlMap namespace="User">
- <resultMap class="com.test.model.User" id="user-result">
- <result property="userId" column="user_id" />
- <result property="userName" column="user_name" />
- <result property="userPassword" column="user_password" />
- </resultMap>
- <select id="get" parameterClass="long" resultMap="user-result">
- ...
- </select>
- <update id="update" parameterClass="com.test.model.User">
- ...
- </update>
- <insert id="insert" parameterClass="com.test.model.User">
- ...
- </insert>
- <delete id="delete" parameterClass="long">
- ...
- </delete>
- </sqlMap>
<sqlMap namespace="User"> <resultMap class="com.test.model.User" id="user-result"> <result property="userId" column="user_id" /> <result property="userName" column="user_name" /> <result property="userPassword" column="user_password" /> </resultMap> <select id="get" parameterClass="long" resultMap="user-result"> ... </select> <update id="update" parameterClass="com.test.model.User"> ... </update> <insert id="insert" parameterClass="com.test.model.User"> ... </insert> <delete id="delete" parameterClass="long"> ... </delete> </sqlMap>
UserSQL.ext.xml
对UserSQL.xml文件的"继承"(这个词可能不太合适) , 只定义方法一个方法(注意它与UserSQL.xml有相同namespace="User")
- <sqlMap namespace="User">
- <!-- 根据用户名获取用户对象,注意user-result定义在UserSQL.xml文件中 -->
- <select id="getUserByName" parameterClass="string" resultMap="user-result">
- ...
- </select>
- </sqlMap>
<sqlMap namespace="User"> <!-- 根据用户名获取用户对象,注意user-result定义在UserSQL.xml文件中 --> <select id="getUserByName" parameterClass="string" resultMap="user-result"> ... </select> </sqlMap>
applicationContext-ibatis.xml , spring配置文件
- <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
- <property name="dataSource" ref="masterdb"/>
- <property name="configLocation" value="classpath:/sql-map-config.xml"/>
- </bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource" ref="masterdb"/> <property name="configLocation" value="classpath:/sql-map-config.xml"/> </bean>
测试代码(在 ibatis 2.3.0版本下测试 没问题)
- public static void main(String[] args) throws Exception {
- ApplicationContext context =
- new ClassPathXmlApplicationContext(new String[]{"applicationContext-ibatis.xml"});
- SqlMapClient client = (SqlMapClient)context.getBean("ssoSqlMapClient");
- User user = (User)client.queryForObject("User.get",new Long(2L));
- user = (User)client.queryForObject("User.getUserByName","fisher");
- }
public static void main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-ibatis.xml"}); SqlMapClient client = (SqlMapClient)context.getBean("ssoSqlMapClient"); User user = (User)client.queryForObject("User.get",new Long(2L)); user = (User)client.queryForObject("User.getUserByName","fisher"); }
ibatis 代码简单分析
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser 这个类来分析 sql-map-config.xml文件 , 用的 SAX callback 方式 ,遇到 <sqlMap> 标签 ,再用 成com.ibatis.sqlmap.engine.builder.xml.SqlMapParser 分析 sqlmap xml文件 ,将分析结果
放入 com.ibatis.sqlmap.engine.builder.xml.XmlParserState 的实例中 , 最后由 XmlParserState.getConfig().getClient() 返回
SqlMapClient 对象
注意事项
1. 两个 sqlmap 文件 在 sql-map-config.xml中定义的顺序很重要, 一定要基础的sqlmap文件在前,否则会抛异常说"继承"的sqlmap文件中某些引用找不到
2. 如果两个 sqlmap 文件中 定义 id 相同的 statement ,会抛异常说 id重复了
3. 如果两个 sqlmap 文件中 定义 id 相同的 ResultMap ,不会抛异常, 各自sqlmap文件中的statement使用各自定义的ResultMap
http://www.iteye.com/topic/930092
发表评论
-
list in传参 与批量插入 批量更新
2017-04-01 10:48 817传入一个map的参数,map里有一个tenantIds的Lis ... -
fork/join框架
2017-03-09 11:03 498http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 694http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1161每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1653问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1308http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1147http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1389http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2048最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 830http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1160高效的字符串模式替换实现效果如下 String str ... -
httpURLConnection获取网络数据:XML格式返回与Json格式返回
2012-12-15 16:57 149251.服务器端代码样例: public class ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 1020利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 854http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1393缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17611. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3288在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12072当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1064http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1315http://www.cnblogs.com/live365w ...
相关推荐
接着,创建一个`FileUploadAction`类,该类继承自WebWork的Action基类,并包含一个用于存储上传文件的临时字段。iBatis的SqlMapClient可以用来处理文件存储到数据库的操作: ```java public class FileUploadAction...
1. mybatis3.0.5:这是MyBatis的3.0.5版本,MyBatis是iBATIS的下一代产品,它继承了iBATIS的核心功能并进行了扩展和优化,支持注解和XML配置文件,提供更强大的动态SQL功能。 2. ibatis-core-3.0:这是iBATIS 3.0...
- `SqlMapFactoryBean` 是 Spring 中用于读取 iBATIS 配置文件并创建 `SqlMap` 的工具类。 - 通过这个类,可以在 Spring 容器中配置 iBATIS 相关组件。 - **关键属性:** - **`configLocation`**: 指定 iBATIS ...
ibatis配置文件包括两部分:`sqlmap-config.xml`和`sqlmap-mapping-tree.xml`。 ##### 1. sqlmap-config.xml配置 ```xml <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS....
该配置文件仅包含领域对象的映射文件路径,而事务管理和数据源配置则被移到了 Spring 的配置文件中。这种设计模式是 Spring 与 Ibatis 整合的一个重要方面。 为了实现持久化逻辑,宠物店项目中定义了一个 `...
在本例中,`sqlMap`元素的`resource`属性指向了`Student.xml`。 整合的关键在于Spring如何管理和调用这些配置。Spring通过DAO(Data Access Object)模式来处理数据库操作,它可以管理SqlMapClient对象的生命周期。...
一个不怎么智能,半手工方式的,但最适合实际开发的java代码生成器 ...而rapid只负责生成代码,这样生成器核心一分精简,没有将存放模板的目录名称及文件名称利用起来,导致还需配置每个模板文件生成的文件名,目录结构
在 iBatis 中,SQL 语句被定义在 XML 配置文件中(这里提到的 `sqlMap文件.txt` 可能就是这样的配置文件),这使得 SQL 可以根据需求灵活调整,而不必改动 Java 代码。这些配置文件通常包含映射器接口,它们定义了...
在使用sqlmap工具进行SQL注入测试时,如果需要通过指定的数据包文件进行注入,那么数据包文件中通常使用`*`来标记注入点的位置。这样,sqlmap就可以根据这个标记来动态地插入不同的参数值进行测试。 #### 10. 使用...
2. **主要组件**:包括SqlMapConfig文件(全局配置)、SqlMap文件(SQL语句与对象映射)、DynamicProxies(动态代理)和CommandExecutor(命令执行器)等。 **三、项目实例准备** 在开始项目实例之前,确保已安装...
4. **继承支持**:IBATIS还支持继承模式下的映射,使得代码复用性更高。 #### 三、IBATIS与Spring、Struts的整合 1. **与Spring的整合**:Spring提供了一种轻量级的依赖注入和面向切面编程的方式,这与IBATIS结合...
- `SqlMap`:Mapper XML文件,包含了具体的SQL语句和结果映射。 4. **自定义扩展**: - `GeneratorSqlmap.java`可能允许用户自定义代码生成规则,比如通过继承MyBatis的默认生成器并重写相关方法。 - 可以添加...
SqlMap的配置文件中包含了SQL查询、更新等操作,你可以为每个SqlMap操作编写对应的测试,确保它们在特定的数据环境下能够正确执行。DbUnit使得在测试过程中,即使数据库中的数据发生变化,也能保证测试的一致性。 ...
在Spring配置文件中,我们需要指定SqlMap配置文件的位置。 7. **SqlMapConfig.xml** iBATIS的SqlMapConfig.xml文件包含了全局设置、数据源、SqlMap等配置。简化后的配置示例中,`<settings>`标签可能包含缓存设置...
这些文件需要在sqlmap-config.xml中注册,使得BaseDao能够找到并执行对应的SQL。 综上所述,Java Web应用中,Action层、Service层、DAO层和Domain层通过注解驱动的Spring管理,实现了各层之间的解耦和协同工作。...
1. **SQL映射文件**:iBATIS的核心是SQL映射文件,它定义了如何将Java方法与SQL语句关联起来。在XML配置文件中,你可以看到`<sqlmap>`元素,包含`<select>`, `<insert>`, `<update>`, 和 `<delete>`等元素,它们分别...
- **继承**:iBATIS支持继承模式,这意味着子类可以继承父类的属性和行为。虽然这不是iBATIS的主要特性,但在某些场景下仍然有用。 ### iBATIS的工作原理 iBATIS的核心是SQL Mapping。它将SQL查询中的参数和结果集...
3. **SQL映射文件**:在iBATIS中,SQL语句被编写在XML格式的映射文件中,例如`*.sqlmap.xml`。这些文件包含了SQL查询、存储过程等,通过ID与Java方法关联。 4. **动态SQL**:iBATIS支持动态SQL,可以在XML映射文件...
此外,还需要创建用于测试的类,这些类通常继承自 DbUnit 提供的 `DatabaseTestCase` 类,这样就可以利用 DbUnit 提供的 API 来管理和操作测试数据。 测试用例的设计是关键。以一个名为 `StudentDAO` 的类为例,...