这个ibatis其实就和hibernate一样,也用来解决阻抗不匹配的问题。总的来说会用hibernate就会用ibatis,从官网来看ibatis已经加入了谷歌阵营,版本也升到了3.0.6.配置文件也有了一些差异。这里我们就是用2.3版本的就可以了。可惜官网上找不到了。现在就来学习一下吧
1.去迅雷上或其他地方下载ibatis的jar包,这个就不多说了
2.把jar包加载进去
3.编写vo类,代码如下所示
package org.lxh.vo;
public class Account {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2.编写ibatis的配置文件,名称随便什么都可以
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
maxTransactions="5" useStatementNamespaces="false" />
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="org.gjt.mm.mysql.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/mldn" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="123456" />
</dataSource>
</transactionManager>
<sqlMap resource="Account.xml" />
</sqlMapConfig>
3.编写ibatis的映射文件,名称随便什么都可以
<?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="Account">
<select id="getAccount" parameterClass="java.lang.String"
resultClass="org.lxh.vo.Account"> select * from Account
</select>
<insert id="createAccount" parameterClass="org.lxh.vo.Account">
insert into Account(username, password) values ( #username#, #password# )
</insert>
</sqlMap>
这里的id很重要,后面会用到,parameterClass表示传入的参数类型,resultClass表示查询的结果类型
4.编写Junit来进行测试
package test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.BeforeClass;
import org.lxh.vo.Account;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class Test{
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@org.junit.Test public void insert(){
try {
com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
java.io.Reader reader = com.ibatis.common.resources.Resources.getResourceAsReader ("sqlmap.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
Account account = new Account();
account.setUsername("micheal");
account.setPassword("1234");
sqlMap.insert("createAccount", account);
}catch(Exception e){
e.printStackTrace();
}
}
@org.junit.Test public void query() {
try {
com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
java.io.Reader reader = com.ibatis.common.resources.Resources.getResourceAsReader ("sqlmap.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
ArrayList all=(ArrayList) sqlMap.queryForList("getAccount");
Iterator it=all.iterator();
while(it.hasNext()){
Account account=(Account)it.next();
System.out.println(account.getUsername());
System.out.println(account.getPassword());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
这里我们可以把相同的代码写成一个类,这里为了方便就不写了。
最后来看一下效果截图
和hibernate相比,ibatis比较轻巧,上手也比较快。也有不少的企业使用这个。但我个人还是比较喜欢hibernate,这个例子比较简单,有问题的和我联系啊。如果写错了给位大神可以丢板砖,我也才刚学这个。