Spring+Ibatis¼¯³É¿ª·¢ÊµÀý!
http://www.diybl.com/¡¡2007-12-6 ¡¡ÍøÂç¡¡µã»÷:
¡¡[ ÆÀÂÛ ]
ÎÄÕÂËÑË÷£º
¡¾µã»÷´ò°ü¸ÃÎÄÕ¡¿
CREATE TABLE `ibatis` (
`id` varchar(20) NOT NULL,
`name` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

insert into ibatis values("1","À´±ö");
insert into ibatis values("2","Óû§");
package com.etong.community.test.dao;

import java.util.List;

import com.etong.community.test.daomain.Ibatis;


public interface IbatisDAO ...{

public List getList();
public Ibatis getByName(String name);
public Ibatis getById(String id);
public void save(Ibatis ibatis);
public void delete(String id);
public void update(Ibatis 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>
<sqlMap resource="com/etong/community/test/dao/ibatis/maps/ibatis.xml" />
</sqlMapConfig>

<?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>
<typeAlias type="com.etong.community.test.daomain.Ibatis" alias="user" />
<resultMap id="ibatisTest" class="user">
<result column="id" property="id" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
</resultMap>

<!-- »ñµÃÈ«²éѯÁбí -->
<select id="getAllUsers" resultMap="ibatisTest">
SELECT ID,NAME FROM IBATIS
</select>

<!-- ¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó -->
<select id="getUsersByName" resultMap="ibatisTest">
SELECT ID,NAME FROM IBATIS WHERE NAME=#value#
</select>

<!-- ¸ù¾Ýid»ñµÃÓû§¶ÔÏó -->
<select id="getUsersById" resultClass="user">
SELECT ID,NAME FROM IBATIS WHERE ID=#value#
</select>

<!-- ÐÂÔöÓû§¶ÔÏó -->
<insert id="insertUsers" parameterClass="user">
INSERT INTO IBATIS (ID,NAME) VALUES (#id#,#name#)
</insert>

<!-- ɾ³ýÓû§¶ÔÏó -->
<delete id="deleteUsers">
DELETE FROM IBATIS WHERE ID=#value#
</delete>

<!-- ¸üÐÂÓû§¶ÔÏó -->
<update id="updateUsers" parameterClass="user">
UPDATE IBATIS SET NAME=#name# WHERE ID=#id#
</update>
</sqlMap>
<?xml version="1.0" encoding="GB18030"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>Allen</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/ibatis</value>
</property>
</bean>

<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<!-- ´Ë´¦Ó¦×¢ÈëibatisÅäÖÃÎļþ£¬¶ø·ÇsqlMapÎļþ£¬·ñÔò»á³öÏÖ“there is no statement.....Òì³£” -->
<property name="configLocation">
<value>sqlMap-config.xml</value>
</property>

</bean>

<bean id="testDAO" class="com.etong.community.test.dao.ibatis.SqlMapIbatisDAO">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
</beans>

package com.etong.community.test.dao.ibatis;

import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.etong.community.test.dao.IbatisDAO;
import com.etong.community.test.daomain.Ibatis;


/** *//**
* @author admin
*
*/

public class SqlMapIbatisDAO extends SqlMapClientDaoSupport implements IbatisDAO ...{


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#delete(java.lang.String)
*/

public void delete(String id) ...{
getSqlMapClientTemplate().delete("deleteUsers", id);

}


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getById(java.lang.String)
*/

public Ibatis getById(String id) ...{
return (Ibatis) getSqlMapClientTemplate().queryForObject(
"getUsersById", id);
}


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getByName(java.lang.String)
*/

public Ibatis getByName(String name) ...{
return (Ibatis) getSqlMapClientTemplate().queryForObject(
"getUsersByName", name);
}


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getList()
*/

public List getList() ...{
return getSqlMapClientTemplate().queryForList("getAllUsers", null);
}


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#save(com.etong.community.test.Ibatis)
*/

public void save(Ibatis ibatis) ...{
getSqlMapClientTemplate().insert("insertUsers", ibatis);

}


/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#update(com.etong.community.test.Ibatis)
*/

public void update(Ibatis ibatis) ...{
getSqlMapClientTemplate().update("updateUsers", ibatis);

}

}

package com.etong.community.test.daomain;

import java.io.Serializable;


public class Ibatis implements Serializable...{


private static final long serialVersionUID = 1L;
private String column;
private String id;
private String name;
private String columnValue;


public String getId() ...{
return id;
}


public void setId(String id) ...{
this.id = id;
}


public String getName() ...{
return name;
}


public void setName(String name) ...{
this.name = name;
}


public Ibatis() ...{

}


/** *//**
* @param string
*/

public void setColumn(String column) ...{
this.column = column;
}


public String getColumn() ...{
return column;
}


public String getColumnValue() ...{
return columnValue;
}


public void setColumnValue(String columnValue) ...{
this.columnValue = columnValue;
}

public Ibatis(String id, String name) ...{
super();
this.id = id;
this.name = name;
}

}

package com.etong.community.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.etong.community.test.dao.ibatis.SqlMapIbatisDAO;
import com.etong.community.test.daomain.Ibatis;


public class TestClient ...{



/** *//**
* @param args
*/

public static void main(String[] args) ...{
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
SqlMapIbatisDAO testDAOImpl = (SqlMapIbatisDAO) context
.getBean("testDAO");
// »ñµÃÈ«²éѯÁбí
System.out.println("»ñµÃÈ«²éѯÁбí");
List result = new ArrayList();
result = testDAOImpl.getList();

for (Iterator iter = result.iterator(); iter.hasNext();) ...{
Ibatis element = (Ibatis) iter.next();
System.out.println(element.getName());

}

// ¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó
System.out.println("¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó");
Ibatis ibatis = testDAOImpl.getByName("À´±ö");
System.out.println(ibatis.getName());

// ¸ù¾Ýid»ñµÃÓû§¶ÔÏó
System.out.println("¸ù¾Ýid»ñµÃÓû§¶ÔÏó");
Ibatis ibatis1 = testDAOImpl.getById("1");
System.out.println(ibatis1.getName());

// ÐÂÔöÓû§¶ÔÏó
System.out.println("-----------------");
System.out.println("ÐÂÔöÓû§¶ÔÏóǰ");
List result1 = new ArrayList();
result1 = testDAOImpl.getList();

for (Iterator iter = result1.iterator(); iter.hasNext();) ...{
Ibatis element = (Ibatis) iter.next();
System.out.println(element.getName());

}
testDAOImpl.save(new Ibatis("3", "¿ÍÈË")); // ÐÂÔöÓû§
System.out.println("Ð
Ê×ÏȽ¨Á¢Êý¾Ý¿âdemo£¬È»ºó½¨±í(±¾ÎÄÑ¡mysql)
½¨±íÊý¾Ý¿â½Å±¾£º
CREATE TABLE `ibatis` (
`id` varchar(20) NOT NULL,
`name` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
insert into ibatis values("1","À´±ö");
insert into ibatis values("2","Óû§");DAO½Ó¿Ú£º
package com.etong.community.test.dao;
import java.util.List;
import com.etong.community.test.daomain.Ibatis;

public interface IbatisDAO ...{
public List getList();
public Ibatis getByName(String name);
public Ibatis getById(String id);
public void save(Ibatis ibatis);
public void delete(String id);
public void update(Ibatis ibatis);
}
IbatisÅäÖÃÎļþ(sqlMap-config.xml)£º
<?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>
<sqlMap resource="com/etong/community/test/dao/ibatis/maps/ibatis.xml" />
</sqlMapConfig>
ibatis sql mapµÄÎļþibatis.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>
<typeAlias type="com.etong.community.test.daomain.Ibatis" alias="user" />
<resultMap id="ibatisTest" class="user">
<result column="id" property="id" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="VARCHAR" />
</resultMap>
<!-- »ñµÃÈ«²éѯÁбí -->
<select id="getAllUsers" resultMap="ibatisTest">
SELECT ID,NAME FROM IBATIS
</select>
<!-- ¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó -->
<select id="getUsersByName" resultMap="ibatisTest">
SELECT ID,NAME FROM IBATIS WHERE NAME=#value#
</select>
<!-- ¸ù¾Ýid»ñµÃÓû§¶ÔÏó -->
<select id="getUsersById" resultClass="user">
SELECT ID,NAME FROM IBATIS WHERE ID=#value#
</select>
<!-- ÐÂÔöÓû§¶ÔÏó -->
<insert id="insertUsers" parameterClass="user">
INSERT INTO IBATIS (ID,NAME) VALUES (#id#,#name#)
</insert>
<!-- ɾ³ýÓû§¶ÔÏó -->
<delete id="deleteUsers">
DELETE FROM IBATIS WHERE ID=#value#
</delete>
<!-- ¸üÐÂÓû§¶ÔÏó -->
<update id="updateUsers" parameterClass="user">
UPDATE IBATIS SET NAME=#name# WHERE ID=#id#
</update>
</sqlMap>
springÅäÖÃÎļþ(applicationContext.xml)
<?xml version="1.0" encoding="GB18030"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>Allen</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/ibatis</value>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<!-- ´Ë´¦Ó¦×¢ÈëibatisÅäÖÃÎļþ£¬¶ø·ÇsqlMapÎļþ£¬·ñÔò»á³öÏÖ“there is no statement.....Òì³£” -->
<property name="configLocation">
<value>sqlMap-config.xml</value>
</property>
</bean>
<bean id="testDAO" class="com.etong.community.test.dao.ibatis.SqlMapIbatisDAO">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
</beans>
DAOʵÏÖÀࣺ
package com.etong.community.test.dao.ibatis;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.etong.community.test.dao.IbatisDAO;
import com.etong.community.test.daomain.Ibatis;

/** *//**
* @author admin
*
*/
public class SqlMapIbatisDAO extends SqlMapClientDaoSupport implements IbatisDAO ...{

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#delete(java.lang.String)
*/
public void delete(String id) ...{
getSqlMapClientTemplate().delete("deleteUsers", id);
}

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getById(java.lang.String)
*/
public Ibatis getById(String id) ...{
return (Ibatis) getSqlMapClientTemplate().queryForObject(
"getUsersById", id);
}

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getByName(java.lang.String)
*/
public Ibatis getByName(String name) ...{
return (Ibatis) getSqlMapClientTemplate().queryForObject(
"getUsersByName", name);
}

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#getList()
*/
public List getList() ...{
return getSqlMapClientTemplate().queryForList("getAllUsers", null);
}

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#save(com.etong.community.test.Ibatis)
*/
public void save(Ibatis ibatis) ...{
getSqlMapClientTemplate().insert("insertUsers", ibatis);
}

/**//*
* (non-Javadoc)
*
* @see com.etong.community.test.IbatisDAO#update(com.etong.community.test.Ibatis)
*/
public void update(Ibatis ibatis) ...{
getSqlMapClientTemplate().update("updateUsers", ibatis);
}
}
domain¶ÔÏó
package com.etong.community.test.daomain;
import java.io.Serializable;

public class Ibatis implements Serializable...{

private static final long serialVersionUID = 1L;
private String column;
private String id;
private String name;
private String columnValue;

public String getId() ...{
return id;
}

public void setId(String id) ...{
this.id = id;
}

public String getName() ...{
return name;
}

public void setName(String name) ...{
this.name = name;
}

public Ibatis() ...{
}


/** *//**
* @param string
*/
public void setColumn(String column) ...{
this.column = column;
}

public String getColumn() ...{
return column;
}

public String getColumnValue() ...{
return columnValue;
}

public void setColumnValue(String columnValue) ...{
this.columnValue = columnValue;
}

public Ibatis(String id, String name) ...{
super();
this.id = id;
this.name = name;
}
}
²âÊÔ´úÂ룺
package com.etong.community.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.etong.community.test.dao.ibatis.SqlMapIbatisDAO;
import com.etong.community.test.daomain.Ibatis;

public class TestClient ...{


/** *//**
* @param args
*/
public static void main(String[] args) ...{
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
SqlMapIbatisDAO testDAOImpl = (SqlMapIbatisDAO) context
.getBean("testDAO");
// »ñµÃÈ«²éѯÁбí
System.out.println("»ñµÃÈ«²éѯÁбí");
List result = new ArrayList();
result = testDAOImpl.getList();
for (Iterator iter = result.iterator(); iter.hasNext();) ...{
Ibatis element = (Ibatis) iter.next();
System.out.println(element.getName());
}
// ¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó
System.out.println("¸ù¾ÝÓû§Ãû»ñµÃÓû§¶ÔÏó");
Ibatis ibatis = testDAOImpl.getByName("À´±ö");
System.out.println(ibatis.getName());
// ¸ù¾Ýid»ñµÃÓû§¶ÔÏó
System.out.println("¸ù¾Ýid»ñµÃÓû§¶ÔÏó");
Ibatis ibatis1 = testDAOImpl.getById("1");
System.out.println(ibatis1.getName());
// ÐÂÔöÓû§¶ÔÏó
System.out.println("-----------------");
System.out.println("ÐÂÔöÓû§¶ÔÏóǰ");
List result1 = new ArrayList();
result1 = testDAOImpl.getList();
for (Iterator iter = result1.iterator(); iter.hasNext();) ...{
Ibatis element = (Ibatis) iter.next();
System.out.println(element.getName());
}
testDAOImpl.save(new Ibatis("3", "¿ÍÈË")); // ÐÂÔöÓû§
System.out.println("Ð