首先来看看配置文件。据自己目前了解。好像最少得两个。官方的例子就是两个。
我这里举例是三个配置文件
名字跟官方命名的一样,其中这个一个是SqlMapConfig.xml ,配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!--注意这里是完整路径名--> <properties resource="com/fssoft/SqlMap.properties" /> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${driver}" /> <property name="JDBC.ConnectionURL" value="${url}" /> <property name="JDBC.Username" value="${username}" /> <property name="JDBC.Password" value="${password}" /> </dataSource> </transactionManager> <sqlMap resource="com/fssoft/Log.xml" /> </sqlMapConfig>
然后连接的jdbc的配置文件命名SqlMap.properties ,我这里用的是MySQL
driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://127.0.0.1\:3306/xlnewsdb username=root password=root
以Log表为例子首先要有Log这个实体类
package com.fssoft.vo;
import java.util.Date;
public class Log {
private int lid;
private String message;
private Date ldate;
private String lname;
@Override
public String toString() {
return "Log [ldate=" + ldate + ", lid=" + lid + ", lname=" + lname
+ ", message=" + message + "]";
}
public int getLid() {
return lid;
}
public void setLid(int lid) {
this.lid = lid;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getLdate() {
return ldate;
}
public void setLdate(Date ldate) {
this.ldate = ldate;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
}
然后接着是Log.xml :
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Log"> <typeAlias alias="Log" type="com.fssoft.vo.Log"/> <resultMap id="LogResult" class="Log"> <result property="lid" column="lid"/> <result property="message" column="message"/> <result property="ldate" column="ldate"/> <result property="lname" column="lname"/> </resultMap> <select id="selectAllLogs" resultMap="LogResult"> select * from Log </select> </sqlMap>
刚开始看官方的配置认为这些似曾相似,但事实上就是以前学习的基础
在这里我只是简单的写了查询,所以接口跟实现类都很简单ILogDAO:
package com.fssoft.dao;
import java.util.List;
import com.fssoft.vo.Log;
public interface ILogDAO {
List<Log> getAllLogs();
}
package com.fssoft.dao.impl;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.fssoft.dao.ILogDAO;
import com.fssoft.vo.Log;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class LogDAOImpl implements ILogDAO {
private static SqlMapClient sqlMapClient = null;
static {
try {
//读取配置
Reader reader = Resources
.getResourceAsReader("com/fssoft/SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List<Log> getAllLogs() {
List<Log> log = null;
try {
log = sqlMapClient.queryForList("selectAllLogs");
} catch (SQLException e) {
e.printStackTrace();
}
return log;
}
}
package com.test;
import org.junit.Test;
import com.fssoft.dao.ILogDAO;
import com.fssoft.dao.impl.LogDAOImpl;
import com.fssoft.vo.Log;
public class IbatisTest {
@Test
public void getAll(){
try {
ILogDAO logDAO = new LogDAOImpl();
for (Log log:logDAO.getAllLogs()){
System.out.println(log);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}