`
hulin
  • 浏览: 60808 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ibatis快速操作Oracle数据库

    博客分类:
  • java
阅读更多
1. 首先导入ibatis的jar包(ibatis-2.3.0.677.jar,ibatis-dao-2.jar)和oracle连接驱动的jar包(classes12.jar)
2. 新建oracle实例oral,用户root,密码root,表visitlog
          --访问日志表--
     CREATE TABLE VisitLog (
     IndexId NUMBER(10) NOT NULL,
     OperateCode VARCHAR2(4) NOT NULL,
     TableName VARCHAR2(10),
     OperatorDesp VARCHAR2(100) NOT NULL,
     OperatorAccount VARCHAR2(20),
     OperatorTime DATE,
     UserIp VARCHAR2(20) NOT NULL
     )NOLOGGING;
    ALTER TABLE VisitLog ADD CONSTRAINT PK_VisitLog_IndexId PRIMARY KEY (IndexId);
  
3   在d:目录下新建连接数据库的连接文件database.properties
     ####################################
     # Database Connectivity Properties
     ####################################

     driver=oracle.jdbc.driver.OracleDriver
     url=jdbc:oracle:thin:@localhost:1521:oral
     username=root
     password=root
     MaximumActiveConnections=20
     MaximumIdleConnections=5
     MaximumWait=60000
     MaximumCheckoutTime=12000000
     TimeToWait=5000
     PingEnabled=false
     PingConnectionsOlderThan=30000
     PingConnectionsNotUsedFor=60000

4   新建webprobject项目ibatistest,新建包com.test
    新建读取加载驱动类BatisManager.class
    package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.Reader;
import java.util.Properties;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.DaoManagerBuilder;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class BatisManager {
private static final String DAO_RESOURCE = "sqlmap/dao.xml";
private static final String SQL_RESOURCE = "sqlmap/sql-map-config.xml";
private static DaoManager daoManager;
private static SqlMapClient sqlMap;
private static String db_conf_path = null;
static {
}

public static DaoManager getDaomanager() {
return daoManager;
}

public static SqlMapClient getSqlMapInstance() {
return sqlMap;
}

public static Object getDaoObject(Class cls) {
return daoManager.getDao(cls);
}

public static Properties getDataBaseProp(String path) throws Exception {
Properties prop = null;
InputStream in = null;
try {
File f = new File(path);
in = new FileInputStream(f);
if (f.isFile())
prop = new Properties();
prop.load(in);
in.close();
} catch (Exception ex) {
System.out.println("The DataBase Config File Is Null Or False");
throw new Exception(
"Dont Read Correctly DataBase Config File,Please Check The File Path Or Content");
} finally {
in = null;
}
return prop;
}

public static void init(String db_conf_path) {
BatisManager.setDb_conf_path(db_conf_path);
try {
System.out.println("INFO: Starting To Load Dao Config File "
+ DAO_RESOURCE);

Reader reader = Resources.getResourceAsReader(DAO_RESOURCE);
Properties prop = null;
if (db_conf_path != null) {
prop = getDataBaseProp(db_conf_path);
daoManager = DaoManagerBuilder.buildDaoManager(reader, prop);
} else {
daoManager = DaoManagerBuilder.buildDaoManager(reader);
}
System.out.println("INFO: Load Dao Config File Success ");
System.out.println("INFO: Starting To Load Sql-Map Config File "
+ SQL_RESOURCE);
reader = Resources.getResourceAsReader(SQL_RESOURCE);
if (db_conf_path != null) {
prop = getDataBaseProp(db_conf_path);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader, prop);
} else {
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
}
System.out.println("INFO: Load Sql-Map Config File Success ");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(
"Could not initialize DaoConfig.  Cause: " + e);
}
}


public static String getDb_conf_path() {
return db_conf_path;
}

public static void setDb_conf_path(String db_conf_path) {
BatisManager.db_conf_path = db_conf_path;
}
}
5   新建ibatis类BaseSqlMapDao.class加载模板
        package com.test;

import java.sql.Connection;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;

public class BaseSqlMapDao extends SqlMapDaoTemplate {

protected static final int PAGE_SIZE = 4;

public BaseSqlMapDao(DaoManager daoManager) {
super(daoManager); //在Java中,this通常指当前对象,super则指父类的
}

public void setConnection(Connection conn) {
try {
this.getSqlMapTransactionManager().setUserConnection(conn);
} catch (Exception ex) {
System.out.println("BaseSqlMapDao.class Set connection error");
}
}
}
6  创建visitlog的VO类VisitLogVO
package com.test;

   public class VisitLogVO  {
private int INDEXID;

private String OPERATECODE;

private String TABLENAME;

public int getINDEXID() {
return INDEXID;
}

public void setINDEXID(int indexid) {
INDEXID = indexid;
}

public String getOPERATECODE() {
return OPERATECODE;
}

public void setOPERATECODE(String operatecode) {
OPERATECODE = operatecode;
}

public String getTABLENAME() {
return TABLENAME;
}

public void setTABLENAME(String tablename) {
TABLENAME = tablename;
}

}
7   新建DAO接口IIbatisDao
        package com.test;

import java.util.List;

public interface IIbatisDao {
   public List list(VisitLogVO vo);
}
8   Dao实现类IbatisDaoImpl.class
package com.test;

import java.util.List;
import com.ibatis.dao.client.DaoManager;

public class IbatisDaoImpl extends BaseSqlMapDao implements IIbatisDao {

public IbatisDaoImpl(DaoManager daoManager) {
super(daoManager);
}
private final static String SELECTINFO = "selectinfo";

public List list(VisitLogVO vo) {
List list=this.queryForList(SELECTINFO);
return list;
}

private static IIbatisDao _instance = null;

public synchronized static IIbatisDao instance() {
if (_instance == null) {
DaoManager daoManager = BatisManager.getDaomanager();
_instance = (IIbatisDao) daoManager.getDao(IIbatisDao.class);
}
return _instance;
}

public static void main(String[] args)
{
BatisManager.init("D:/database.properties");
IIbatisDao batis=(IIbatisDao)BatisManager.getDaoObject(IIbatisDao.class);
VisitLogVO vo=new VisitLogVO();
List<VisitLogVO> list=(List<VisitLogVO>)batis.list(vo);
System.out.println(list.size());

}
}
注:这里还不能测试,因为没有加裁查询和加载驱动的xml文件,最后再测!!!
9   在src目录下新sqlmap文件夹,src/sqlmap下新建src/sqlmap/dao.xml
    <?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE daoConfig SYSTEM "http://www.ibatis.com/dtd/dao-2.dtd">
<daoConfig>
<context>
<transactionManager type="SQLMAP">
<property name="SqlMapConfigResource"
value="sqlmap/sql-map-config.xml" />
</transactionManager>
<dao interface="com.test.IIbatisDao" implementation="com.test.IbatisDaoImpl" />
</context>
</daoConfig>
10  在src/sqlmap下新建src/sqlmap/sql-map-config.xml
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE sqlMapConfig SYSTEM "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="true" enhancementEnabled="true" maxSessions="228" maxTransactions="128" maxRequests="1000"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property value="${driver}" name="JDBC.Driver"/>
<property value="${url}" name="JDBC.ConnectionURL"/>
<property value="${username}" name="JDBC.Username"/>
<property value="${password}" name="JDBC.Password"/>
<property name="JDBC.DefaultAutoCommit" value="true"/>
<property value="${MaximumActiveConnections}" name="Pool.MaximumActiveConnections"/>
<property value="${MaximumIdleConnections}" name="Pool.MaximumIdleConnections"/>
<property value="${MaximumWait}" name="Pool.MaximumWait"/>
<property name="Pool.MaximumCheckoutTime" value="${MaximumCheckoutTime}"/>
<property name="Pool.TimeToWait" value="${TimeToWait}"/>
<property name="Pool.PingQuery" value="select 1 as ISPINGWORKING from dual"/>
<property name="Pool.PingEnabled" value="${PingEnabled}"/>
<property name="Pool.PingConnectionsOlderThan" value="${PingConnectionsOlderThan}"/>
<property name="Pool.PingConnectionsNotUsedFor" value="${PingConnectionsNotUsedFor}"/>
</dataSource>
</transactionManager>

<sqlMap resource="sqlmap/sql/test.xml"/>
</sqlMapConfig>
11   在sqlmap下新文件夹sql,src/sqlmap/sql,建立test.xml
     <?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE sqlMap SYSTEM "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="visitlog">
<typeAlias alias="visitlog"
type="com.test.VisitLogVO" />

<select id="selectinfo" parameterClass="visitlog"
resultClass="visitlog">
<![CDATA[
  SELECT INDEXID,OPERATECODE,TABLENAME FROM VISITLOG
]]>
</select>
</sqlMap>

完工了,可以回到IbatisDaoImpl.class里测试下了
作者:linres QQ:386000628
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics