Struts2+Spring2+iBatis2整合


iBatis 框架基础 1/6 yfwork L3 《Struts2+Spring2+iBatis2 整合》上机手册 1. 内容回顾(3-5 分钟) 1. Spring2 和 iBatis2 整合步骤? 2. Struts2 和 Spring2 整合步骤? 2. 上机目标 1. 掌握 Struts2、Spring2、iBatis2 三个框架的整合要领和步骤 2. 使用 SSI 改写前面的功能模块 3. 上机任务 3.1 SSI 员工管理模块 任务要求:使用 Struts2+Spring2+iBatis2 框架整合改写 参考步骤: 1、实现 Spring2+iBatis2 框架整合 (1) src 目录下编写 Spring 定义文件,使用 Spring 提供的整合工具类完成 SqlMapClient 的定义 说明: 通过 Spring 提供的整合类 SqlMapClientFactoryBean,并注入 dataSource、 iBatis 全局配置文件(其中不必配置数据源)完成 SqlMapClient 对象的建造。 Spring 框架有关的 JAR 文件必须部署到项目的 WEB-INF/lib 目录下。 iBatis 框架基础 2/6 yfwork (2) 使用 Spring 的整合类重写 DAO 组件 使用 SqlMapClientDaoSupport 整合类完成 DAO 组件的重写,如下: 说明: DAO 组件其他方法类似,借助 SqlMapClientTemplate 类对应的方法完成持久化操作。 getSqlMapClientTemplate().insert(String,obj) //保存 getSqlMapClientTemplate ().update(String,obj) //更新 getSqlMapClientTemplate ().delete(String,obj) //删除 getSqlMapClientTemplate ().queryForObject(String, id) //加载 getSqlMapClientTemplate ().queryForList(String,obj) // 查询 2、在 Spring 定义文件中定义 DAO 组件并测试 iBatis 框架基础 3/6 yfwork 编写测试代码测试 Spring 和 hibernate 整合是否正确: 请思考:改写后,能否使用直接实例化的 EmpDAO 组件,而不是通过 Spring 容器获取的? 3、Struts2+Spring2 框架整合 (1) 部署 struts2-spring-plugin.jar 到项目的 WEB-INF/lib 目录下 该 JAR 文件可到 Struts2 的分发压缩文件中去获取。 (2) 在 web.xml 中配置 Spring 监听器 说明: 环境上下文参数名 contextConfigLocation 不能写错,否则监听器找不到定义文件。 (3) Action 组件中使用属性注入方式定义所需的 dao 组件 说明:我们借助 Struts2 的插件,通过属性名自动注入组件到 Action 中。 4、部署应用,启动服务器,并测试 5、到这一步,三个框架整合完成。 项目大致的类图结构如下: iBatis 框架基础 4/6 yfwork 3.2 继续完成员工列表功能,支持组合查询 要求: 使用 iBatis 完成按照员工姓名和所属部门进行组合查询,并列表显示查询结果。 分析: 员工姓名输入为空,则不按姓名查询,否则应按姓名查询 所属部门选择为全部,则不按部门查询;否则应按部门查询 选择不同,最后的 SQL 语句的筛选条件不一样。 技术:我们使用 iBatis 的动态查询来完成。 参考代码: 1、列表页面提供查询 说明: 所属部门列表中全部选项对应的值为 0。因为部门 ID 是从 1 开始的。 2、Action 组件的 list 方法处理查询请求,参数都封装到 emp 属性对象中。 iBatis 框架基础 5/6 yfwork 3、EmpDAO 组件添加组合查询方法 getObjects(Employee emp),其中的 emp 封装有查询参 数信息。 4、在 Employee.xml 中进行 SQL 定义,并且是动态查询 说明: (1) parameterClass="demo.bean.Employee"指定输入参数类型,查询参数信息通过 Employee 对象传入。 (2) 标记指定 SQL 语句中动态部分,其中 prepend 属性指定为 where 部分,其 中(3) 和(4) 分别指定筛选条件。 (3) 由于 empName 不为空才需要筛选,使用标记来进行非空判断,其 property 属性指定输入对象的属性名,prepend 属性指定条件组合方式为 and 与操作。内容 体给定筛选条件。 员工姓名需要模糊查询,需要使用%,则需拼写字串,引用属性就不能使用#而要使用 $符号。 (4) 部门 ID 不等于 0 才需要筛选,所以使用比较进行不等判断,其中 property 属性指定输入对象的属性名,prepend 属性指定条件组合方式为 and 与操作, compareValue 属性指定比较值。内容体给定筛选条件。 另外,由于可能直接请求 Action 组件的 list 方法,导致封装部门 ID 的属性为空,所 以还需要使用进行非 NULL 判断。 iBatis 框架基础 6/6 yfwork 5、Action 组件的 list 方法完成代码如下,是不是比 Hibernate 实现代码要简洁些?! 6、测试 3.3 使用 SSI 改写部门管理模块 任务要求: 使用 Struts2+Spring2+iBatis2 框架整合改写 解决方式参见 3.1 节。请自行完成。 课外继续完成。
还剩5页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

345bobcat

贡献于2012-08-19

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf