- 浏览: 195971 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
atgoingguoat:
Spring Cloud 现状目前,国内使用 Spring C ...
SpringCloud2 从入门 -
zssapple:
taskList.jsp 中的问题解决:if(${sessio ...
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子 -
793059909:
很详细
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
aa00aa00:
一个中国移动的系统,呵呵,报错来的,现在调试好了
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限) -
小fi(FD):
楼主有考虑过用非关系型数据库实现吗?如果用非关系型数据库,对于 ...
动态表单分析
前面,已经发个工程。现在讲下里面代码的具体功能和作用。
我也是半桶水,只是了解一点,原来这个工程也是另一个同事搞的这个框架。
这几个包的用途就不说了。反正全打上。呵呵。
1:com.kingter.groupapp.business 应用功能包
2:com.kingter.groupapp.domain 程序中用到的数据类包
3:com.kingter.groupapp.persistence ibatis 程序映射包
4:com.kingter.groupapp.persistence.iface ibatis 程序映射 接口类包
5:com.kingter.groupapp.persistence.sqlmapdao ibatis 程序映射 接口实现类包
6:com/kingter/groupapp/properties/ 配置文件包
7:com.kingter.groupapp.service ibatis 对外实现包
下面介绍代码:
- 先写数据类
package com.kingter.groupapp.domain; import java.io.*; /** * 数据类 继承 Serializable ,要写构造函数,get set * @author Administrator * */ public class AreaInfo implements Serializable { private String areaID; private String areaName; private String areaDepict; public AreaInfo() { } public String getAreaDepict() { return areaDepict; } public String getAreaID() { return areaID; } public String getAreaName() { return areaName; } public void setAreaID(String areaID) { this.areaID = areaID; } public void setAreaName(String areaName) { this.areaName = areaName; } public void setAreaDepict(String areaDepict) { this.areaDepict = areaDepict; } }
2。 数据库及其它配置文件
com/kingter/groupapp/properties/groupappdatabase.properties
#################################### # Database Connectivity Properties #################################### #²ÊÐÅÓªÏúƽ̨ groupapp_driver=oracle.jdbc.driver.OracleDriver groupapp_url=jdbc:oracle:thin:@localhost:8512:ora9 groupapp_username=data_markmms groupapp_password=data_mmsmark
其它应用数据配置文件 com/kingter/groupapp/properties/groupappconfig.properties
怎么用,自己在网上找吧,g.cn 上多的很。
#################################### # Properties #################################### resourceWeb=http://localhost:8080/
3: DAO配置
package com.kingter.groupapp.persistence; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.dao.client.DaoManager; import com.ibatis.dao.client.DaoManagerBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * <p>Title: DAO配置</p> * <p>Description: 用于获得DAO管理对象</p> * <p>Copyright: Copyright (c) 2010</p> * <p>Company: </p> * @author * @version 1.0 */ public class DaoConfig { private static Log log = LogFactory.getLog(DaoConfig.class); private static final DaoManager daoManager; static { try { String resource = "com/kingter/groupapp/persistence/dao.xml"; Reader reader = Resources.getResourceAsReader(resource); daoManager = DaoManagerBuilder.buildDaoManager(reader); //log.info(daoManager.getClass().getName()); } catch (Exception e) { throw new RuntimeException("Could not initialize DaoConfig. Cause: " + e); } } public static DaoManager getDaomanager() { return daoManager; } }
接口与实现类映射配置。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE daoConfig PUBLIC "-//iBATIS.com//DTD DAO Configuration 2.0//EN" "http://www.ibatis.com/dtd/dao-2.dtd"> <daoConfig> <context> <transactionManager type="SQLMAP"> <property name="SqlMapConfigResource" value="com/kingter/groupapp/persistence/sqlmapdao/sql/sql-map-config.xml"/> </transactionManager> <dao interface="com.kingter.groupapp.persistence.iface.AreaInfoDao" implementation="com.kingter.groupapp.persistence.sqlmapdao.AreaInfoSqlMapDao"/> </context> </daoConfig>
4: ibatis 接口及实现
接口
package com.kingter.groupapp.persistence.iface; import java.util.*; import com.kingter.groupapp.domain.AreaInfo; public interface AreaInfoDao { public List findAllAreaInfo(); public AreaInfo findAreaInfoByAreaID(String AreaID); }
实现基础类
这里其实代码只要几句,不知为什么,到了 MyEclipse6.0 就要我实现SqlMapDaoTemplate 所有的方法
package com.kingter.groupapp.persistence.sqlmapdao; import java.sql.SQLException; import java.util.List; import com.ibatis.common.util.PaginatedList; import com.ibatis.dao.client.DaoManager; import com.ibatis.dao.client.template.SqlMapDaoTemplate; import com.ibatis.sqlmap.client.event.RowHandler; import com.ibatis.sqlmap.engine.execution.BatchException; public class BaseSqlMapDao extends SqlMapDaoTemplate { @Override public int delete(String arg0) throws SQLException { // TODO Auto-generated method stub return 0; } @Override public List executeBatchDetailed() throws SQLException, BatchException { // TODO Auto-generated method stub return null; } @Override public Object insert(String arg0) throws SQLException { // TODO Auto-generated method stub return null; } @Override public List queryForList(String arg0, int arg1, int arg2) throws SQLException { // TODO Auto-generated method stub return null; } @Override public List queryForList(String arg0) throws SQLException { // TODO Auto-generated method stub return null; } @Override public Object queryForObject(String arg0) throws SQLException { // TODO Auto-generated method stub return null; } @Override public PaginatedList queryForPaginatedList(String arg0, int arg1) throws SQLException { // TODO Auto-generated method stub return null; } @Override public void queryWithRowHandler(String arg0, RowHandler arg1) throws SQLException { // TODO Auto-generated method stub } @Override public int update(String arg0) throws SQLException { // TODO Auto-generated method stub return 0; } protected static final int PAGE_SIZE = 15; public BaseSqlMapDao(DaoManager daoManager) { super(daoManager); } }
实现类
package com.kingter.groupapp.persistence.sqlmapdao; import java.sql.*; import java.util.*; import org.apache.commons.logging.*; import com.ibatis.dao.client.*; import com.kingter.groupapp.domain.AreaInfo; import com.kingter.groupapp.persistence.iface.AreaInfoDao; public class AreaInfoSqlMapDao extends BaseSqlMapDao implements AreaInfoDao { private static Log log = LogFactory.getLog(AreaInfoSqlMapDao.class); public AreaInfoSqlMapDao(DaoManager daoManager) { super(daoManager); } public List findAllAreaInfo() { List list = null; try {
//SqlMapDaoTemplate 都有 sql 具体操作对应的方法。
//如: queryForList 查询多条数据。
list = queryForList("getAllAreaInfo", null); } catch (Exception ex) { log.error(ex); } return list; } public AreaInfo findAreaInfoByAreaID(String AreaID){ AreaInfo areaInfo = null; try{ areaInfo = (AreaInfo)queryForObject("getAreaInfoByAreaID",AreaID); } catch(Exception ex){ log.error(ex); } return areaInfo; } }
5: SQL 映射 XML 文件
数据源及SQL文件配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!----> <properties resource="com/kingter/groupapp/properties/groupappdatabase.properties"/> <settings cacheModelsEnabled="true" enhancementEnabled="true" maxSessions="64" maxTransactions="8" maxRequests="128"/> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property value="${groupapp_driver}" name="JDBC.Driver"/> <property value="${groupapp_url}" name="JDBC.ConnectionURL"/> <property value="${groupapp_username}" name="JDBC.Username"/> <property value="${groupapp_password}" name="JDBC.Password"/> <property value="15" name="Pool.MaximumActiveConnections"/> <property value="15" name="Pool.MaximumIdleConnections"/> <property value="1000" name="Pool.MaximumWait"/> </dataSource> <!--<property name="UserTransaction" value="UserTransaction" /> <dataSource type="JNDI"> <property name="DataSource" value="java:/mmssale" /> </dataSource>--> </transactionManager> <sqlMap resource="com/kingter/groupapp/persistence/sqlmapdao/sql/AreaInfo.xml"/> </sqlMapConfig>
SQL语句配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="AreaInfo"> <typeAlias alias="areaInfo" type="com.kingter.groupapp.domain.AreaInfo"/> <resultMap id="areaInfoResult" class="areaInfo"> <result property="areaID" column="area_id" nullValue=""/> <result property="areaName" column="area_name" nullValue=""/> <result property="areaDepict" column="area_depict" nullValue=""/> </resultMap> <select id="getAllAreaInfo" resultMap="areaInfoResult" parameterClass="string"> select area_id,area_name,area_depict from t_area_info </select> <select id="getAreaInfoByAreaID" resultMap="areaInfoResult" parameterClass="string"> select area_id,area_name,area_depict from t_area_info where area_id = #value# </select> </sqlMap>
***********************************
ibatis SQL 语句的写的技巧,可以参考网上专门的示例。
parameterClass 参数类型,可以是 map,string ,object.
resultMap 返回结果集
id="getSiteInfoByMore 这个是名称,在整个项目中要是唯一的。
<dynamic prepend="where"> 动态增加 where 语句
<isNotEmpty prepend="and" property="siteID">
site_id = #siteID#
</isNotEmpty>
如果 siteID 为空,则不会生成这个条件,反之则生成。
<isNotEmpty prepend="and" property="siteName">
<![CDATA[
( site_name LIKE '%$siteName$%')
]]>
</isNotEmpty>
这个就是 like 语句
<statement id="getSiteInfoByMore" resultMap="siteInfoResult" parameterClass="java.util.Map"> select site_id,company_id,logo_url,site_name,site_url,site_title,site_key,site_meta,copyright from t_site_info <dynamic prepend="where"> <isNotEmpty prepend="and" property="siteID"> site_id = #siteID# </isNotEmpty> <isNotEmpty prepend="and" property="siteName"> <![CDATA[ ( site_name LIKE '%$siteName$%') ]]> </isNotEmpty> <isNotEmpty prepend="and" property="companyID"> company_id = #companyID# </isNotEmpty> </dynamic> </statement>
select site_id,company_id,logo_url,site_name,site_url,site_title,site_key,site_meta,copyright
from t_site_info#sqlnewcode#
#sqlnewcode#
你还可以从前台动态带入SQL 语句。但我个人不提议用,以后不好维护。
***********************************
7: ibatiS SQL 功能实现
用于客户端(表示层)来统一访问,业务层调用DAO将数据持久化
package com.kingter.groupapp.service; /** * <p>Title: 业务服务接口(业务层)</p> * <p>Description: 用于客户端(表示层)来统一访问,业务层调用DAO将数据持久化</p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: </p> * @author * @version 1.0 */ public interface ServiceBean { }
实现代码
package com.kingter.groupapp.service; import java.util.*; import org.apache.commons.logging.*; import com.ibatis.dao.client.*; import com.kingter.groupapp.domain.AreaInfo; import com.kingter.groupapp.persistence.*; import com.kingter.groupapp.persistence.iface.AreaInfoDao; public class AreaInfoService implements ServiceBean { private static Log log = LogFactory.getLog(AreaInfoService.class); private static AreaInfoService instance = null; private DaoManager daoManager = null; private AreaInfoDao areaInfoDao; private AreaInfoService() { daoManager = DaoConfig.getDaomanager(); areaInfoDao = (AreaInfoDao) daoManager.getDao(AreaInfoDao.class); } public static AreaInfoService getInstance() { if (instance == null) { instance = new AreaInfoService(); } return instance; } public List findAllAreaInfo() { return areaInfoDao.findAllAreaInfo(); } public AreaInfo findAreaInfoByAreaID(String AreaID){ return areaInfoDao.findAreaInfoByAreaID(AreaID); } }
9: 外部应用代码
package com.kingter.groupapp.business; import com.kingter.groupapp.domain.*; import com.kingter.groupapp.service.*; import java.util.*; public class AreaInfoBean { public AreaInfoBean() { } public List findAllAreaInfo() { return AreaInfoService.getInstance().findAllAreaInfo(); } public AreaInfo findAreaInfoByAreaID(String AreaID){ return AreaInfoService.getInstance().findAreaInfoByAreaID(AreaID); } }
发表评论
-
SpringCloud2 从入门
2019-03-30 09:46 835首先初步认识下它: ... -
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子
2017-09-22 14:58 929JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的 ... -
Maven3的POM.xml元素说明详解
2017-09-20 16:53 980Maven3的POM.xml元素说明 POM代表项目对象 ... -
MyBatis的foreach语句详解
2014-02-10 09:55 893foreach的主要用在构建in ... -
JSP获取所有参数并追加写入文件
2013-12-20 14:53 1141JSP获取所有参数并追加写入文件 <% ... -
Jquery+Spring3+Struts2+Ibatis3框架源代码工程(含权限)
2012-07-19 15:02 3739开发框架选择 Jquery1.6 + strust2.1 ... -
java开源-项目管理工具-java源代码
2012-03-17 15:11 3289因工作需要,想找些项目管理工具,找了一些,都觉得不 ... -
java 常用工具包(自己拓展)
2010-11-16 23:05 2881做了六七年的程序员,突然间发现自己常常去网上找工具类.怎么不自 ... -
请管理员删除此贴
2010-05-18 22:38 200rapid-framework一般的人应该不会陌生,国产的, ... -
java5, java6 的新特性
2010-05-09 22:36 1365下面简单的列出Java5和Ja ... -
Rapid-framework代码自动生成器
2010-05-08 22:36 1591rapid-framework是一个以spring为核心的we ... -
ibatis3 简单示例
2010-05-06 14:36 3173ibatis3 已经发布了。跟ib ... -
Dwr入门例子(附源代码下载-JBuilder2006工程)完成
2010-05-03 15:51 1527Dwr+ibatis+oracle9i入门例子(附源代码下载- ... -
dwr+ibatis+mysql +jsp 权限管理平台源代码
2010-04-15 11:49 2017JBuilder开发的一个权限管理平台源代码,适用于常见的 ... -
Hibernate入门示例(架构图)
2010-04-09 08:55 2464在 Java Web 开发应用中,Hibernate可以作为 ... -
java cms MyEclipse6.0 工程代码
2010-04-07 14:46 2424JEECMS是国内Java版开源网站内容管理系统(java c ... -
java读取文件及文件流
2010-01-28 16:10 2692package cn.xx.io.util; imp ...
相关推荐
《深入解析iBatis源代码》 iBatis,作为一个轻量级的持久层框架,以其灵活、易用的特点在Java开发中占据了重要的地位。它将SQL与Java代码分离,提高了开发效率,降低了维护难度。本文将从iBatis源代码的角度出发,...
6. **MyEclipse集成**:掌握在MyEclipse中创建iBatis项目、导入数据库驱动、运行SQL脚本、调试Java代码和部署应用的方法。 通过深入学习这个实例,开发者不仅可以掌握iBatis的基本用法,还能熟悉在MyEclipse环境下...
总结,通过这个“ibatis MyEclipse 入门工程代码 图文教程”,我们可以学习到如何在MyEclipse环境中搭建Ibatis项目,编写SQL映射文件,以及如何在Java代码中调用这些映射进行数据库操作。了解这些基础步骤,对于后续...
**Ibatis 源代码详解** Ibatis 是一个在Java应用程序中用于数据库操作的开源、半自动化的ORM(对象关系映射)框架。它允许开发者将SQL语句直接写入XML配置文件,使得数据访问层与业务逻辑层解耦,提高了代码的可...
《深入解析iBatis-2源代码》 iBatis,作为一个轻量级的持久层框架,曾经在Java开发领域中占据了重要的地位。它将SQL语句与Java代码分离,提高了开发效率,降低了维护难度。本篇文章将针对从Apache网站通过SVN下载的...
在"Ibatis源代码(ibatis-src.zip)"中,我们可以深入理解其内部机制和设计思想。 首先,`release.txt`通常包含项目发布的信息,如版本号、发布日期以及可能的更新日志。这为我们提供了Ibatis当前版本的详细背景信息...
【标题】"IBATIS3代码生成器"是一款专为基于IBATIS3框架的项目设计的工具,它能够自动生成常见的SQL映射文件、Java DAO接口和实现类,大大提高了开发效率,降低了手动编写这些代码的工作量。该工具的核心理念是通过...
《iBatis实战and源代码.zip》这个压缩包包含了关于iBatis框架的实战经验和源代码,对于深入了解和学习iBatis有着极大的帮助。iBatis是一个优秀的持久层框架,它允许开发者将SQL语句与Java代码分离,提高了开发效率和...
spring mybatis ibatis 实例(源代码)
《深入剖析iBatis框架:一个CRUD操作的项目实例》 iBatis,一个轻量级的Java持久层框架,以其简洁、灵活的特点,在Java开发领域...通过源代码阅读,不仅可以加深对iBatis的理解,也能提高我们在实际开发中的应用能力。
因此,我们需要通过修改Ibatis的源代码来实现物理分页,以提高查询效率。 物理分页是直接在数据库层面进行分页,避免了将所有数据加载到内存中的问题。下面我们将详细探讨如何在Ibatis中实现物理分页。 首先,了解...
通过深入学习iBATIS的源代码,你可以了解到如何优雅地处理数据库操作,理解其内部的参数绑定机制,以及它如何处理SQL语句的动态构建。此外,还可以学习到如何实现自定义的拦截器(Interceptor)来扩展iBATIS的功能,...
综上所述,`iBatis_Spring`源代码的学习涵盖了数据库连接、SQL映射、事务处理、依赖注入等多个核心概念,通过深入理解这些知识点,开发者可以更好地掌握企业级Java应用的开发技巧。在实际项目中,这样的整合可以带来...
### 利用ibatis框架生成代码:自动化与效率提升 #### 核心概念与优势解析 **ibatis**,现在通常被称为**MyBatis**,是一个支持普通SQL查询、存储过程以及高级映射的优秀开源持久层框架。ibatis消除了几乎所有的...
1. **SqlMapConfig.xml**:这是整个iBATIS系统的配置文件,包含了数据源、事务管理器以及其他相关设置。开发者在此文件中定义数据库连接信息,以及映射文件的位置。 2. **Mapper接口/SqlMap.xml**:Mapper接口是...
本篇文章将深入探讨Ibatis代码自动生成的相关知识点,以及如何利用工具提高开发效率。 1. Ibatis简介: Ibatis作为轻量级的ORM(对象关系映射)框架,其核心功能是通过XML或注解的方式将Java对象与SQL语句进行映射...
【ibatis代码自动生成代码程序】是一个实用工具,旨在帮助开发者快速生成基于iBATIS框架的Java代码。iBATIS,作为一个数据访问层框架,它允许程序员将SQL语句与Java代码分离,提供了一种简单但强大的方式来处理...
在这个项目中,"struts+spring+ibatis源代码"很可能是为了演示或学习这三种技术如何协同工作。下面我们将详细探讨这三个框架以及它们在实际开发中的应用。 **Struts** Struts是一个基于MVC设计模式的Java Web框架,...
本文将针对iBatis 2.3.4.726版本的源代码进行详尽解读,帮助开发者深入了解其内部机制,提升开发与调试能力。 1. **框架概述** iBatis,又称为MyBatis的前身,是一个基于Java的持久层框架,它简化了数据库操作,将...
Ibatis源代码的分析有助于理解其工作原理,提升开发技能,并可能为自定义扩展或优化提供基础。 源码中的`release.txt`通常包含版本发布信息,包括发布日期、版本号、更新内容等,这对于了解Ibatis的演化历史和当前...