网上有网友经常问,怎么使用ibatis做连接查询。ibatis的查询和jdbc差不多是一个级别的,但要求是“要熟练使用sql语句”。这个和hibernate有一些差异,hibernate会自动为我们编写sql语句但是ibatis做不到这一点,也没有hibernate那么灵活的映射关系。下面我就来写一个程序
在写程序之前,先来看看我的数据库表。我一直用msql.数据库就自己选了,随便哪个都可以
这里的主表是t_depart,从表是t_class.这个关系还是用的比较多的。这也就是写这篇文章的原因
1.写2个pojo类
package org.lxh.vo;
import java.util.List;
public class Depart {
private String dno;
private String dname;
private String classno;
public String getDno() {
return dno;
}
public void setDno(String dno) {
this.dno = dno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public void setClassno(String classno) {
this.classno = classno;
}
public String getClassno() {
return classno;
}
}
package org.lxh.vo;
import java.util.List;
public class Banji {
private String classno;
private String classname;
private String headname;
private String dno;
public String getClassno() {
return classno;
}
public void setClassno(String classno) {
this.classno = classno;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public String getHeadname() {
return headname;
}
public void setHeadname(String headname) {
this.headname = headname;
}
public String getDno() {
return dno;
}
public void setDno(String dno) {
this.dno = dno;
}
}
2.写一个含有查询语句的xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="test">
<typeAlias alias="banji" type="org.lxh.vo.Banji" />
<typeAlias alias="depart" type="org.lxh.vo.Depart" />
<select id="selectAll" parameterClass="java.lang.String" resultClass="depart">
select classno, dname
from t_class c,t_depart d
where c.dno = d.dno and c.dno=#dno#
</select>
</sqlMap>
至于那个ibatis的配置文件,我就不写了都一个样子
package test;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.lxh.vo.Depart;
import org.lxh.vo.Key;
import org.lxh.vo.Lock;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws SQLException {
SqlMapClient sqlMapper = null;
try {
Reader reader = Resources.getResourceAsReader("mymap/sqlmap.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
List<Depart> all=sqlMapper.queryForList("selectAll","01");
Iterator<Depart> it=all.iterator();
while(it.hasNext()){
Depart depart=it.next();
System.out.println(depart.getClassno()+","+depart.getDname());
}
}
}
ok了。到这里代码就写好了,来看一下效果截图
写的比较简单,如果有错误请大家指出来,我会和大家交流。