iBatis 2入門實例

看了《iBatis in Action》,寫一個簡單ibatis 2 應用實例

我學什麼框架都是喜歡從簡單的java程序開始,不急忙去整合。現在就用簡單的java project來說。

1. 完成本實驗,首先需要得到一個ibatis的jar包,我這裏用的是ibatis-2.3.0.677.jar,由於本實驗需要連接Mysql數據庫,所以還要有mysql的驅動包,我這裏用的是mysql-connector-java-5.0.5.jar。

下面將要用到的mysql數據庫:

#
# Table structure for table 'user_account'
#
DROP TABLE USER_ACCOUNT;
CREATE TABLE USER_ACCOUNT (
	USERID INT(3) NOT NULL AUTO_INCREMENT,
	USERNAME VARCHAR(10) NOT NULL,
	PASSWORD VARCHAR(30) NOT NULL,
	GROUPNAME VARCHAR(10),
	PRIMARY KEY (USERID)
);
#
# Data for table 'user_account'
#
INSERT INTO USER_ACCOUNT (USERNAME, PASSWORD, GROUPNAME) VALUES ('admin', 'admin', 'admin');
INSERT INTO USER_ACCOUNT (USERNAME, PASSWORD, GROUPNAME) VALUES ('ALEX', 'PICKLE', 'EMPLOYEE');
INSERT INTO USER_ACCOUNT (USERNAME, PASSWORD, GROUPNAME) VALUES ('JDOE', 'TEST', 'EMPLOYEE');
INSERT INTO USER_ACCOUNT (USERNAME, PASSWORD, GROUPNAME) VALUES ('Leon', '1234', 'EMPLOYEE');
INSERT INTO USER_ACCOUNT (USERNAME, PASSWORD, GROUPNAME) VALUES ('Mike', '1234', 'EMPLOYEE');

COMMIT;

 2. Eclipse下,新建Java Project,導入上面的兩個jar包,現在工程中只有src一個源文件夾,爲了後面好看,添加一個源文件夾resource。

3. 在resource源文件夾下新建3個文件

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="ibatis-mysql.properties" />
			
	<typeAlias alias="user" type="leon.ibatis.User" />

	<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="SqlMap.xml" />
</sqlMapConfig>

ibatis-mysql.properties:

#mysql connection
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test1
username=root
password=leonsu

SqlMap.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>
	<select id="getAllUsers" parameterClass="string" resultClass="user">
		SELECT USERID,USERNAME,PASSWORD,GROUPNAME 
		FROM USER_ACCOUNT 
		WHERE GROUPNAME = #groupName#
	</select>
	
	<select id="getUserById" parameterClass="integer" resultClass="user">
		SELECT USERID,USERNAME,PASSWORD,GROUPNAME 
		FROM USER_ACCOUNT 
		WHERE USERID = #id#
	</select>
	
</sqlMap>

說明:

這樣的配置下,如果你的電腦沒有聯網,那麼運行可能出錯,因爲SqlMapConfig.xml和SqlMap.xml的DOCTYPE定義的dtd文件是聯網獲得的,如果沒聯網可能會報錯。

如果非要在斷網的情況下運行本實驗,可以先把http://ibatis.apache.org/dtd/sql-map-config-2.dtdhttp://ibatis.apache.org/dtd/sql-map-2.dtd 下載下來保存在xml文件的同一目錄resource下,然後在DOCTYPE定義的時候改爲這兩個文件,如:

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"

          "sql-map-2.dtd">

 

4. 源文件夾src下面創建類leon.ibatis.User

package leon.ibatis;

public class User {
	private int userid;
	private String username;
	private String password;
	private String groupname;
	//省略getter,setter
}

在創建類,來應用ibatis:

package leon.ibatis;

import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TestIBatis {
	public static void main(String str[]) throws Exception {
		String resource = "SqlMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		List<User> list=new ArrayList<User>();
		list = sqlMap.queryForList("getAllUsers", "EMPLOYEE");
		
		int s = list.size();
		System.out.println("Selected " + s + " records.");
		
		System.out.println("USERID\tUSERNAME\tPASSWORD\tGROUP");
		
		for (int i = 0; i < s; i++) {
			System.out.print(list.get(i).getUserid()+"\t");
			System.out.print(list.get(i).getUsername()+"\t\t");
			System.out.print(list.get(i).getPassword()+"\t\t");
			System.out.println(list.get(i).getGroupname());
		}
	}
}

運行這個類,打印出:

Selected 4 records.
USERID	USERNAME	PASSWORD	GROUP
1	ALEX		PICKLE		EMPLOYEE
2	JDOE		TEST		EMPLOYEE
3	Leon		1234		EMPLOYEE
4	Mike		1234		EMPLOYEE


最後,本例子中SqlMap.xml中定義了兩個select,其實也就是有兩個方法了。上面用了getAllUsers,還有一個getUserById可以作爲你的上手的實驗,試試看吧!



 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章