本实例是用Ibatis实现数据库的一个查询语句。
提前要做的是建立数据库 demo1
下面是建库脚本:
内容如下:
/*
MySQL Data Transfer
Source Host: localhost
Source Database: demo1
Target Host: localhost
Target Database: demo1
Date: 2011/5/19 19:49:16
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user_account
-- ----------------------------
CREATE TABLE `user_account` (
`userId` int(3) NOT NULL auto_increment,
`username` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
`groupName` varchar(10) default NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `user_account` VALUES ('1', 'Jack', '123456', 'MBA');
INSERT INTO `user_account` VALUES ('2', 'Lily', '123456', 'NBA');
INSERT INTO `user_account` VALUES ('3', 'YaoMing', '123456', 'CBA');
INSERT INTO `user_account` VALUES ('4', 'Mary', '123456', 'BeiJing');
INSERT INTO `user_account` VALUES ('5', 'Zenger', '123456', 'MBA');
1.新建一个工程Demo1
拷贝相应的mysql jar + ibatis jar
2.在src目录下编写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>
<!-- Configure a built-in transaction manager. If you're using an
app server, you probably want to use its transaction manager
and a managed datasource -->
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/demo1"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="root"/>
</dataSource>
</transactionManager>
<!-- List the SQL Map XML files. They can be loaded from the
classpath, as they are here (com.domain.data...) -->
<sqlMap resource="Account.xml"/>
<!-- List more here...
<sqlMap resource="com/mydomain/data/Order.xml"/>
<sqlMap resource="com/mydomain/data/Documents.xml"/>
-->
</sqlMapConfig>
2.在src目录下再添加Account.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="getALlUsersByGroupName" resultClass="HashMap" parameterClass="java.lang.String">
select * from user_account where groupName = #groupName#
</select>
</sqlMap>
3.新建一个Demo1,小小测试一把
内容如下:
package com.zenger.ibatis;
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.Entry;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.zenger.bean.UserAccountBean;
public class Demo1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String resource = "SqlMapConfig.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
List list = sqlMap.queryForList("getALlUsersByGroupName", "MBA");
UserAccountBean uab = new UserAccountBean();
for(int i=0;i<list.size();i++){
System.out.println( list.get(i));
// 关于对IBITIS的学习就到上面这行代码即可。
// ——————————————————————————————————————————————————
// 怎么获得一个未知对象的类型,使用getClass()方法。
System.out.println( "aaaaaaaa"+list.get(i).getClass());
//
// System.out.println(uab.getUserId()+" "+uab.getUsername()+" "+uab.getPassword()+" "+uab.getGroupName());
HashMap hm = (HashMap)list.get(i);
Iterator<Entry<Object,Object>> it = hm.entrySet().iterator();
while(it.hasNext()){
Entry<Object,Object> entry = it.next();
String key = (String)entry.getKey();
Object value = entry.getValue();
System.out.println(key+" "+value.toString());
if("groupName".equalsIgnoreCase(key)){
uab.setGroupName(value.toString());
}
if("username".equalsIgnoreCase(key)){
uab.setUsername(value.toString());
}
if("userId".equalsIgnoreCase(key)){
uab.setUserId(Integer.parseInt(value.toString()));
}
if("password".equalsIgnoreCase(key)){
uab.setPassword(value.toString());
}
}
System.out.println(uab.getUserId()+" "+uab.getUsername()+" "+uab.getPassword()+" "+uab.getGroupName());
// 终于大功告成,哈哈哈!!!
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// test follow method
UserAccountBean uab = Demo1.getBean("{groupName=MBA, username=Zenger, userId=5, password=123456}");
System.out.println("this is test the follow method:"+uab.getUserId()+" "+uab.getUsername()+" "+uab.getPassword()+" "+uab.getGroupName());
}
/**
* 这个方法对Ibatis没用,不用理会
* @param str : {groupName=MBA, username=Jack, userId=1, password=123456}
* @return UserAccountBean
*/
public static UserAccountBean getBean(String str){
UserAccountBean uab = new UserAccountBean();
str = str.substring(1,str.length()-1);
System.out.println("str:"+str);
//groupName=MBA, username=Jack, userId=1, password=123456
String[] cols = str.split(", ");
for(int i=0;i<cols.length;i++){
//groupName=MBA
String[] _cols = cols[i].split("=");
for(int j=0;j<_cols.length;j++){
//groupName MBA
System.out.println(_cols[j]+"cccc");
if("groupName".equalsIgnoreCase(_cols[j])){
uab.setGroupName(_cols[j+1]);
}
if("username".equalsIgnoreCase(_cols[j])){
uab.setUsername(_cols[j+1]);
}
if("userId".equalsIgnoreCase(_cols[j])){
String colsStr = _cols[j+1];
Integer userId = Integer.parseInt(colsStr);
int userI = userId.intValue();
uab.setUserId(userI);
}
if("password".equalsIgnoreCase(_cols[j])){
uab.setPassword(_cols[j+1]);
}
}
}
return uab;
}
}