首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

iBatis2.X入门顺带完整项目

2013-08-26 
iBatis2.X入门附带完整项目虽然iBatis更名为MyBatis,同时版本也更新到3.X,并且功能也更加完善和方便使用,

iBatis2.X入门附带完整项目
    虽然iBatis更名为MyBatis,同时版本也更新到3.X,并且功能也更加完善和方便使用,但对于很多人来说2.X的稳定性和安全性更值得留恋,更多的是遗留的项目大多都使用的2.X版本!刚开始学习ORM框架时,使用的是Hibernate,深感其功能的强大,但同时感觉到其效率优化是个很大的问题(看到其发出的HQL和SQL语句就觉得蛋碎还有各种参数的调整优化),没有很多的经验积累无法做出很好的性能优化!出现的情况就是反而不如使用JDBC开发时性能来得高。后来同学实习时他公司使用了ibatis,看到SQLMAP时眼前一亮,心说这个就是我想要的,直接用SQL语言来做自己想做的事,在源头解决效率问题(优化SQL)总是令人愉快的,并且参数优化也相对简单。更主要的是自己练习的项目基本是中小型居多(太小的还是直接JDBC吧,用ibatis配置文件会把你搞烦的,虽然有ibator帮忙),此篇文章为学习总结整理,希望对那些想要入门的同学或同仁有所帮助!
    首先,你所要准备的东西有:ibatis、log4j架包,安装有ORACLE数据库或MySQL数据库(因为目前我只使用这2个 )以及相应的jdbc驱动包(ORACLE的驱动在安装目录里的product\11.2.0\dbhome_1\jdbc\lib这个下面,MySQL的google一下有很多)。
    接下来是代码部分,我全沾了,后面跟个打包,想要跑一下的(其实你直接下个去跑跑,改改也就入门了),MyEclipse直接导入,Eclipse建个同名项目,包复制进去,建立Java EE6 library和jdk1.6 library,导入驱动包和上面的包就行。
   
    目录结构:
    Model(POJO)以及sqlmap,sqlmapcofig和DAO:
    Model:



sqlmap(iBatis.xml):

DAO(IbatisDAO.java):

log4j配置文件log4j.properties:
#log4j.rootLogger = [ level ] , appenderName, appenderName, ...log4j.rootLogger = INFO, console, R#level=INFO,all can be output#console is set to be a ConsoleAppenderlog4j.appender.console = org.apache.log4j.ConsoleAppender#console have four patterns#org.apache.log4j.HTMLLayout#org.apache.log4j.PatternLayout#org.apache.log4j.SimpleLayout#org.apache.log4j.TTCCLayoutlog4j.appender.console.layout = org.apache.log4j.PatternLayout#define the output typelog4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%nlog4j.logger.com.ibatis=debuglog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debuglog4j.logger.com.ibatis.common.jdbc.ScriptRunner=debuglog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug#file is set to output to a extra filelog4j.appender.R = org.apache.log4j.RollingFileAppender#the absolute route of the log4j filelog4j.appender.R.File = /log.txt#the sizelog4j.appender.R.MaxFileSize = 500KB#back up a filelog4j.appender.R.MaxBackupIndex = 1log4j.appender.R.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %5p [%F\:%L] %c{8}.%M() - %m%n

OK!基本就是这样子,ORACLE使用触发器实现主键自增的方法:insert语句中省去ID字段相关的东西,在数据库中创建类似这样的触发器:
create or replace trigger tr_ibid
before insert on ibatislearn
for each row
declare
begin
select ibatis_id.nextval into :new.id from dual;
end tr_ibid;

另外iBatis的n+1问题(一次目的查询在数据库查询了2次,其实就是外键问题,要取到被关联主键的所有信息),此处有详解http://cuishen.iteye.com/blog/544207
ibatis比较容易学习,但写代码的时候要细心,可能少个符号就报一堆错,千万记住!

热点排行