最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

iBatis初步认识与使用

来源:动视网 责编:小采 时间:2020-11-09 14:10:38
文档

iBatis初步认识与使用

iBatis初步认识与使用:实习期间在做任务的时候需要用到ibatis,公司系统所用框架是经理搭建的,也就是说我只要把ibatis的原理与用法搞定就行了,于是我一边看着系统的代码一边在网上搜索ibaits的demo!下面就把我对ibatis的初步认识写出来,欢迎大牛提出批评与建议! iBATIS
推荐度:
导读iBatis初步认识与使用:实习期间在做任务的时候需要用到ibatis,公司系统所用框架是经理搭建的,也就是说我只要把ibatis的原理与用法搞定就行了,于是我一边看着系统的代码一边在网上搜索ibaits的demo!下面就把我对ibatis的初步认识写出来,欢迎大牛提出批评与建议! iBATIS


实习期间在做任务的时候需要用到ibatis,公司系统所用框架是经理搭建的,也就是说我只要把ibatis的原理与用法搞定就行了,于是我一边看着系统的代码一边在网上搜索ibaits的demo!下面就把我对ibatis的初步认识写出来,欢迎大牛提出批评与建议! iBATIS一词来

实习期间在做任务的时候需要用到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

 
 
 
 
 
 
 
 
  
 
 
 
  
 	
 	
 	
 	update bookinfo set 
 	bookISBN=#bookISBN#,
 	bookName=#bookName#,
 	author=#author#,
 	price=#price#,
 	typeId=#typeId#,
 	publish=#publish# 
 	where id=#id#
 	
 	
 	
 	
 	delete from bookinfo where id = #id#
 	
 	
 	
 	
 
写到这,是不是感到缺少什么文件啊,比如链接数据库的代码在哪,还有像hibernate还有一个总的配置文件啊,都在哪呢?现在就写数据库的链接代码!

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.Map;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.wxc.bean.BookInfo;
import com.wxc.dao.BookInfoDao;

public class BookInfoDaoImpl implements BookInfoDao {
	private static SqlMapClient sqlMapClient = null;
	
	//读取配置文件
	static{
	try {
	Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
	sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
	reader.close();
	} catch (Exception e) {
	e.printStackTrace();
	}
	}
	@SuppressWarnings("unchecked")
	@Override
	public List listBookInfo() {
	List list = null;
	try {
	//注意第一个参数,是对应xml文件里的查询id
	list = this.sqlMapClient.queryForList("listBookInfo", null);
	} catch (Exception e) {
	e.printStackTrace();
	}
	return list;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List bookInfoByAuthor(String name) {
	List list = null;
	try {
	list = this.sqlMapClient.queryForList("listBookInfoByAuthor", name);
	} catch (Exception e) {
	e.printStackTrace();
	}
	return list;
	}

	@SuppressWarnings("static-access")
	@Override
	public void update(BookInfo bookinfo) {
	try {
	this.sqlMapClient.update("update", bookinfo);
	} catch (SQLException e) {
	e.printStackTrace();
	}
	}

	@SuppressWarnings("static-access")
	@Override
	public void delete(int id) {
	try {
	this.sqlMapClient.delete("delete", id);
	} catch (SQLException e) {
	e.printStackTrace();
	}
	}

	@Override
	public List listByAuthorAndPublish(String author, String publish) {
	Map mp = new HashMap();
	mp.put("anthor", author);
	mp.put("publish", publish);
	List list = null;
	try {
	list = this.sqlMapClient.queryForList("listByAuthorAndPublis", mp);
	} catch (SQLException e) {
	e.printStackTrace();
	}
	return list;
	}

}
到此,所有的文件都敲好了,只需要写一个测试类调用Impl里的方法就行了。这里说几点ibatis独特的地方,注意实体类的映射文件BookInfo.xml里有
select * from bookinfo where author=#sql#

然后在java文件里这样写

String sql = author+"and publish"+publish;

也就是把sql语句从中间劈开,这样有的时候也许是通用的,但是也有特殊的时候,我就是被这样的写法坑了一次,所以建议大家还是用Map传递参数

到这里,有没有感到ibatis是一个持久层的框架啊,如果把hibernate比作是自动冲锋的话那ibatis数据半自动冲锋。sql语句还是需要自己写的!!!

好了,

文档

iBatis初步认识与使用

iBatis初步认识与使用:实习期间在做任务的时候需要用到ibatis,公司系统所用框架是经理搭建的,也就是说我只要把ibatis的原理与用法搞定就行了,于是我一边看着系统的代码一边在网上搜索ibaits的demo!下面就把我对ibatis的初步认识写出来,欢迎大牛提出批评与建议! iBATIS
推荐度:
标签: 期间 使用 任务
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top