今天也是刚刚接触ibatis于是二话不说先弄了个例子再边用边学习。
首先是下载ibatis。
从http://ibatis.apache.org/java.cgi这里可以下载for java的ibatis。
我这里使用的是ibatis2.3.4。下载地址为:http://apache.etoak.com/ibatis/binaries/ibatis.java/ibatis-2.3.4.726.zip
解压缩后将ibatis-2.3.4.726.jar放到项目的lib文件夹下。
然后在src创建一个package。这里我使用的是com.test.ssi.ibatis。
首先是在package下创建SQLMapConfig.xml来对ibatis进行配置。
/p>
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
=============================================================
这里配置数据源时候可以直接在dataSource中配置。也可以通过使用db.properties中的属性进行配置。这里使用的是db.properties的属性db.properties文件配置如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testssh
user=root
password=12345678=============================================================
配置后就要看看数据表和为表创建映射类以及映射类的xml文件。这里暂时都放在同一个package。
这里使用的表为user表。sql语句如下:CREATE TABLE `user` (
`id` int(11)
NOT NULL auto_increment,
`userid` varchar(20) NOT NULL,
`userpwd` varchar(20) DEFAULT NULL,
`userques` varchar(50) DEFAULT NULL,
`userans`
varchar(50) DEFAULT NULL,
`usermail` varchar(50)
DEFAULT NULL,
`integral` int DEFAULT 0,
`sex` varchar(6) DEFAULT NULL,
`realname` varchar(50) DEFAULT
NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM
DEFAULT CHARSET=utf8;=============================================================
然后创建相应的映射类User.java
package com.test.ssi.ibatis;
/**
* User entity.
*
* @author MyEclipse Persistence Tools
*/
public class User implements java.io.Serializable {
// Fields
private Integer id;
private String userid;
private String userpwd;
private String userques;
private String userans;
private String usermail;
private Integer integral;
private Integer grade;
private String sex;
private String realname;
/** default constructor */
public User() {
}
/** full constructor */
public User(String userid, String userpwd, String userques, String userans,
String usermail, Integer integral, Integer grade, String sex,
String realname) {
this.userid = userid;
this.userpwd = userpwd;
this.userques = userques;
this.userans = userans;
this.usermail = usermail;
this.integral = integral;
this.grade = grade;
this.sex = sex;
this.realname = realname;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserid() {
return this.userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUserpwd() {
return this.userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
public String getUserques() {
return this.userques;
}
public void setUserques(String userques) {
this.userques = userques;
}
public String getUserans() {
return this.userans;
}
public void setUserans(String userans) {
this.userans = userans;
}
public String getUsermail() {
return this.usermail;
}
public void setUsermail(String usermail) {
this.usermail = usermail;
}
public Integer getIntegral() {
return this.integral;
}
public void setIntegral(Integer integral) {
this.integral = integral;
}
public Integer getGrade() {
return this.grade;
}
public void setGrade(Integer grade) {
this.grade = grade;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getRealname() {
return this.realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
}=============================================================
然后是映射类的xml文件User.xml
/p>
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
SELECT ID as id,
USERID as userId,
USERPWD as userPwd,
USERQUES as userQues,
USERANS as userAns
FROM USER
WHERE ID = #id#
SELECT ID as id,
USERID as userId,
USERPWD as userPwd,
USERQUES as userQues,
USERANS as userAns
FROM USER
UPDATE USER
SET
USERID=#userid#,USERPWD=#userpwd#
WHERE id = #id#
delete from user where id = #id#
insert into user(userid,userpwd) values (#userid#,#userpwd#)
这里定义了获取单个对象和对象列表两种查询和更新,删除,插入的操作。
最后编写一个测试类来试试这些吧。
TestIbatis.java
package com.test.ssi.ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class TestIbatis {
public static void main(String args[]) {
try {
com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
String resource = "com/test/ssi/ibatis/SQLMapConfig.xml";
Reader reader = Resources.getResourceAsReader (resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
//queryForObject():获取一条记录。
User user =(User)sqlMap.queryForObject("getUser",1);
System.out.println("test ibatis userid is:"+user.getUserid());
//* queryForList():返回一行或多行,可用参数返回固定几行,可用分页。
List list = sqlMap.queryForList("getUsers");
System.out.println("test ibatis query list:"+list.size());
sqlMap.startTransaction();
/*
User newu = new User();
newu.setUserid("daxiaojie");
newu.setUserpwd("132123123");
User u = (User)sqlMap.insert("insertUser",newu);
System.out.println("new user is:"+u.getUserid());
User u = new User();
u.setId(1);
u.setUserid("xiaoyue2");
u.setUserpwd("321321");
//更新记录
int rr = sqlMap.update("updateUser", u);
System.out.println("test ibatis update row:"+rr);
*/
//删除记录
int rr = sqlMap.delete("deleteUser",3);
System.out.println("test ibatis delete row:"+rr);
sqlMap.commitTransaction();
sqlMap.endTransaction();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e1){
e1.printStackTrace();
}
}
}
这样一个简单的增删改查就都有了。目前还没有明白如何分页查询,只是试了试普通的数据操作。如果有不对的地方还请大家指出!