package com.inch.common.db.ibatis;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class MyAppSqlConfig {
private static final SqlMapClient sqlMap;
private static final SqlMapClient mysqlMap;
static {
try {
/**
* ���������ļ�·��
*/
// String sqlmappath = "com/zjhcsoft/test/user/domain";
String resource = "sqlmapconfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
resource = "sqlmapconfig_mysql.xml";
reader = Resources.getResourceAsReader(resource);
mysqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
/* Reader reader = Resources.getResourceAsReader(resource);
sqlMap = new XmlSqlMapClientBuilder().buildSqlMap(reader,sqlmappath);*/
} catch (Exception e) {
throw new RuntimeException(
"Error initializing MyAppSqlConfig class.Cause :" + e.getMessage());
}
}
public static SqlMapClient getSqlMapInstance() {
return sqlMap;
}
public static SqlMapClient getMySqlMapInstance() {
return mysqlMap;
}
}
IbatisDao
package com.inch.common.db.ibatis;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.inch.common.db.id.IDGeneratorFactory;
import com.inch.common.exception.ApplicationException;
import org.apache.log4j.Logger;
/**
* oracle???
* @author rtm 2005-9-4
* @description
* @spring.bean id="ibatisDao"
*/
public class IbatisDao {
public static Logger logger = Logger.getLogger(IbatisDao.class);
private SqlMapClient sqlMap;
public static IbatisDao getDao(){
return new IbatisDao();
}
public String generateStringId(){
return (String)IDGeneratorFactory.generate(null);
}
/**
* @return
*/
public SqlMapClient getSqlMap() {
//System.out.println("init sql Map");
this.sqlMap = MyAppSqlConfig.getSqlMapInstance();
//System.out.println(sqlMap.toString());
return this.sqlMap;
}
/**
* @param sqlMapId
* @param param
* @return
*/
public int count(String sqlMapId, Object param){
List list = null;
int num = 0;
try {
long start = System.currentTimeMillis();
list = this.getSqlMap().queryForList(sqlMapId,param);
long time = System.currentTimeMillis() - start;
// 如果结果记录条数超过80
if ( list != null && list.size() > 80 ) {
logger.error("[count]Performance Wanning: result.size=[" + list.size() + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
if ( time > 500 ) {
logger.error("[count]Performance Wanning: search time=[" + time + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
if(list != null && list.size() > 0){
try{
if(list.size() > 1){
/**
* ?????count???????size
*/
return list.size();
}else{
num = Integer.parseInt((String)list.get(0));
}
}catch(RuntimeException e){
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
}
return num;
}
/**
* ??????seq
* @param sqlMapId
* @return
*/
public Long getIdValue(String sqlMapId){
try {
return (Long)this.getSqlMap().queryForObject(sqlMapId,null);
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
}
/**
* ???????
* @param sqlMapId
* @param param
*/
public void update(String sqlMapId, Object param) {
try {
long start = System.currentTimeMillis();
this.getSqlMap().update(sqlMapId, param);
long time = System.currentTimeMillis() - start;
if ( time > 500 ) {
logger.error("[update]Performance Wanning: update time=[" + time + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
}
public String queryForString(String sqlMapId,Object param){
return String.valueOf(this.queryForObject(sqlMapId,param));
}
/**
* ???
*
* @param sqlMapId
* @param param
* @return
*/
public List queryForList(String sqlMapId, Object param) {
List list = null;
try {
long start = System.currentTimeMillis();
list = this.getSqlMap().queryForList(sqlMapId, param);
long time = System.currentTimeMillis() - start;
// 如果结果记录条数超过80
if ( list != null && list.size() > 80 ) {
logger.error("[queryForList]Performance Wanning: result.size=[" + list.size() + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
if ( time > 500 ) {
logger.error("[queryForList]Performance Wanning: search time=[" + time + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
if (list == null) {
list = new ArrayList();
}
return list;
}
/**
* ????????????
*
* @param sqlMapId
* @param param
* @return
*/
public Object queryForObject(String sqlMapId, Object param) {
Object value = null;
try {
long start = System.currentTimeMillis();
value = this.getSqlMap().queryForObject(sqlMapId, param);
long time = System.currentTimeMillis() - start;
if ( time > 500 ) {
logger.error("[queryForObject]Performance Wanning: search time=[" + time + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
return value;
}
/**
* ????????????
*
* @param sqlMapId
* @param param
* @return
*/
public boolean queryIfExist(String sqlMapId, Object param) {
List list = null;
try {
long start = System.currentTimeMillis();
list = this.getSqlMap().queryForList(sqlMapId, param);
long time = System.currentTimeMillis() - start;
// 如果结果记录条数超过80
if ( list != null && list.size() > 80 ) {
logger.error("[queryIfExist]Performance Wanning: result.size=[" + list.size() + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
if ( time > 500 ) {
logger.error("[queryIfExist]Performance Wanning: search time=[" + time + "]sqlMapId=[" + sqlMapId +"] param=" + param +"]");
}
} catch (SQLException e) {
logger.error(e.getMessage());
throw new ApplicationException(e.getMessage());
}
if (list == null || list.size() == 0) {
return false;
} else {
return true;
}
}
}
分享到:
相关推荐
iBatis DAO
iBATIS DAO是Java开发中的一个持久层框架,它提供了数据访问对象(DAO)的实现,使得数据库操作更加简单和灵活。在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好...
**IBATISDAO库类操作详解** 在Java开发中,IBATIS是一个流行的数据访问接口框架,它提供了灵活的SQL映射机制,使得开发者能够直接使用SQL语句进行数据库操作,而无需编写复杂的JDBC代码。`IBATISDAO`库类是基于...
本知识点主要聚焦于如何生成Ibatis的Dao(数据访问对象)类,以及相关的实体类(Entity)和SQL映射文件(sqlMap)。下面我们将详细介绍这个过程。 首先,Ibatis Dao的生成通常涉及到几个关键步骤: 1. **配置文件*...
本资料“ibatisDao.rar”包含了一份对iBATIS DAO框架的深入分析,旨在帮助开发者更好地理解和应用这一技术。 在iBATIS中,DAO(Data Access Object)是数据库访问对象,它封装了对数据库的增删查改操作。DAO模式是...
ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包ibatis dao 包
本篇文章将详细介绍如何使用Abator工具搭建基于Ibatis的DAO框架。 Abator是一款自动化工具,它可以自动生成Java代码和SQL映射文件,大大简化了开发过程。下面我们将分步骤解析如何利用Abator来创建Ibatis DAO框架。...
### iBATIS DAO事务管理实现 #### 一、概述 iBATIS DAO(Data Access Object)框架中的事务管理是该框架的重要组成部分之一。它不仅负责管理事务连接池,还能够处理多个ORM(Object Relational Mapping)环境下的...
iBATIS DAO是Java开发中的一个关键组件,它在企业级应用中被广泛使用,特别是在数据访问层(DAO,Data Access Object)的设计中。iBATIS DAO 2.2.0.638是一个特定版本的iBATIS框架,这个版本提供了对数据库操作的...
### iBATIS Data Access Objects (DAO):一种强大的持久层抽象技术 在深入探讨iBATIS Data Access Objects(DAO)的细节之前,我们先来理解一下这个概念的重要性以及它如何改变Java应用程序的开发方式。 #### 引言...
在IT领域,尤其是在Java开发中,iBATIS与DAO(Data Access Object)模式的结合为开发者提供了一种高效、灵活且可扩展的数据访问方案。本文将深入探讨iBATIS实现DAO的相关知识点,包括其背景、原理、优势以及具体实现...
Ibatis,一个轻量级的Java持久层框架,正是DAO模式的一种实现,它提供了灵活的SQL映射机制,使得开发者能够更方便地将SQL查询与Java代码结合。下面我们将深入探讨Ibatis在DAO应用中的核心概念、工作原理以及实际应用...
【J2EE核心:iBatis_DAO入门与进阶】 DAO(Data Access Object)模式在J2EE应用中扮演着关键角色,它提供了一种将业务逻辑与数据访问操作解耦的方式。DAO模式的核心思想是创建一个接口,该接口定义了所有与数据源...
本篇我们将深入探讨“IBatis常用操作封装”,并结合提供的`IBatisDao.java`文件来解析其核心功能和用法。 首先,`IBatis`的核心理念是通过XML或注解的方式定义SQL映射文件,将SQL语句与业务逻辑代码分离,提高了...
5. **iBatis-dao-2.jar**:iBatis(在本例中可能是iBATIS DAO的特定版本)是另一种ORM框架,不同于Hibernate,它更强调SQL的灵活性。iBatis允许开发者编写自定义的SQL,将SQL语句直接嵌入XML配置文件或Java代码中,...
资源名称:iBATIS框架源码剖析内容简介:iBATIS是一种比较流行的ORM框架,本书全面介绍其结构体系和分析其源程序代码,该框架的核心包括两个组件,一个是iBATIS DAO,另一个是iBATIS SQL Map。本书分为三个部分,第...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层(Service层)以及数据访问层(DAO层)。本项目提供的是一款工具,能够自动化生成这三层的代码,极大地提高了...
ibatis-dao-2.jar gggggggggggg
其次,`iBATIS-DAO-2_en.pdf`是关于iBATIS DAO层的英文文档。DAO(Data Access Object)模式是一种常用的设计模式,用于隔离应用程序与数据存储之间的交互。在iBATIS中,DAO层可以帮助你创建可重用的对象,这些对象...