文档结构:
src/config
ibatisConfiguration.xml:
//类型别名设置
//数据源配置
//映射表
//sql标签,用于标记常用的字符.
article_id,title,author,classid
//parameterType,参数类型
//resultType。返回类型
//id。唯一值,调用时使用。
//mybatis中最关键的标签:resultMap
//一对一映射的关键:association
//select:执行dao.ClassTypeDAO.getClassTypeById方法,并将返回值设置到peoperty.来完成一对一映射
//resultMap:通过此值指向resultMap,可以进行复杂的处理
classid, classname
Article.java
package dao.domain;
public class Article {
public int article_id;
public String title;
public String author;
public int classid;
public Classtype classtype;
public Classtype getClasstype() {
return classtype;
}
public void setClasstype(Classtype classtype) {
this.classtype = classtype;
}
public int getArticle_id() {
return article_id;
}
public void setArticle_id(int article_id) {
this.article_id = article_id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
@Override
public String toString() {
return "Article [article_id=" + article_id + ", title=" + title
+ ", author=" + author + ", classid=" + classid
+ ", classtype=" + classtype + "]";
}
}
package dao.domain;
public class Classtype {
public int classid;
public String classname;
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
@Override
public String toString() {
return "Classtype [classid=" + classid + ", classname=" + classname
+ "]";
}
}
ArticleDAO.java
package dao;
import java.util.HashMap;
import dao.domain.Article;
public interface ArticleDAO {
public Article getArticleById(int id);
public Article getArticleAndClassTypeById(int id);
}
package dao;
import dao.domain.Classtype;
public interface ClassTypeDAO {
public Classtype getClassTypeById(int id);
}
ArticleDAOImpl.java
package dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import dao.ArticleDAO;
import dao.domain.Article;
public class ArticleDAOImpl implements ArticleDAO {
private static SqlSession session = null;
private static ArticleDAO mapper = null;
static{
String resouce = "config/ibatisConfiguration.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resouce);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
session = factory.openSession();
mapper = session.getMapper(ArticleDAO.class);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public Article getArticleById(int id) {
return mapper.getArticleById(id);
}
@Override
public Article getArticleAndClassTypeById(int id) {
return mapper.getArticleAndClassTypeById(id);
}
}
package dao.impl;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import dao.ClassTypeDAO;
import dao.domain.Classtype;
public class ClassTypeDAOImple implements ClassTypeDAO {
private static SqlSession session = null;
private static ClassTypeDAO mapper = null;
static{
String resouce = "config/ibatisConfiguration.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resouce);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
session = factory.openSession();
mapper = session.getMapper(ClassTypeDAO.class);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public Classtype getClassTypeById(int id) {
return mapper.getClassTypeById(id);
}
}
test.java
package test;
import dao.ArticleDAO;
import dao.ClassTypeDAO;
import dao.impl.ArticleDAOImpl;
import dao.impl.ClassTypeDAOImple;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ArticleDAO dao = new ArticleDAOImpl();
System.out.println(dao.getArticleById(3));
System.out.println(dao.getArticleAndClassTypeById(2));
ClassTypeDAO classtypeDAO = new ClassTypeDAOImple();
System.out.println(classtypeDAO.getClassTypeById(1));
}
}
Article [article_id=3, title=title, author=test, classid=1, classtype=null]
Article [article_id=2, title=title, author=test, classid=1, classtype=Classtype [classid=1, classname=test]]
Classtype [classid=1, classname=test]