实习期间在做任务的时候需要用到ibatis,公司系统所用框架是经理搭建的,也就是说我只要把ibatis的原理与用法搞定就行了,于是我一边看着系统的代码一边在网上搜索ibaits的demo!下面就把我对ibatis的初步认识写出来,欢迎大牛提出批评与建议!
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和?NET的持久层框架。(百度百科-_-!!!),当我看到持久层框架的时候,我想到了hibernate,hibernate的使用我略知一二,难道它跟hibernate的使用有相同之处吗?
下面是ibatis的框架图:

我仔细的分析了下:
从上往下看,是不是可以这样理解,ibatis使用SqlMap.xml和SqlMapConfig.xml这两个配置文件完成对数据库的链接和各种JDBC操作呢?
从左往右看,是不是可以这样理解,可以把各种请求与参数通过javaBean、map、primitive和xml发送,然后再将结果一一的返回给他们呢?
有了猜测,接下来就是验证的时候了,我迫不及待的找了好多demo,通过这些demo我搭建了自己的demo。
首先是数据库部分

接下来就是数据表对应的实体类了BookInfo.java
package com.wxc.bean;
public class BookInfo {
private int id;
private String bookISBN;
private String bookName;
private String author;
private float price;
private int typeId;
private String publish;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookISBN() {
return bookISBN;
}
public void setBookISBN(String bookISBN) {
this.bookISBN = bookISBN;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public int getTypeId() {
return typeId;
}
public void setTypeId(int typeId) {
this.typeId = typeId;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this.publish = publish;
}
@Override
public String toString() {
return "BookInfo:"+this.bookName+","+this.author+","+this.price+","+this.publish;
}
}
像hibernate一样它也有一个对应的映射文件BookInfo.xml
写到这,是不是感到缺少什么文件啊,比如链接 数据库的代码在哪,还有像hibernate还有一个总的配置文件啊,都在哪呢?现在就写数据库的链接代码!update bookinfo set bookISBN=#bookISBN#, bookName=#bookName#, author=#author#, price=#price#, typeId=#typeId#, publish=#publish# where id=#id# delete from bookinfo where id = #id#
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/book?autoReconnect\=true&useUnicode\=true&characterEncoding\=utf8 jdbc.username=root jdbc.password=root总的配置文件SqlMapConfig.xml
到这里还没有什么感觉,还是把dao和impl写出来再说
BookInfogDao.java
package com.wxc.dao;
import java.util.List;
import com.wxc.bean.BookInfo;
public interface BookInfoDao {
/**
* 获取所有图书信息
*/
public List listBookInfo();
/**
* 根据作者获取图书信息
*/
public List bookInfoByAuthor(String name);
/**
* 修改图书信息
*/
public void update(BookInfo bookinfo);
/**
* 删除图书信息
*/
public void delete(int id);
/**
* 注意这里的参数不是一个而是两个
* 根据作者与出版社获取图书信息
*/
public List listByAuthorAndPublish(String author,String publish);
}
BookInfoDaoImpl.java
package com.wxc.impl; import java.io.Reader; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.