首先简历数据库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 "," 1 "); insert into ibatis values (" 2 "," 2 ");
DAO接口:
package ch10.SpringAndIbatis; import java.util.List; public interface IDAO ... { 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配置文件:
<? 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 ="ch10/SpringAndIbatis/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 ="ch10.SpringAndIbatis.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 * from Ibatis </ select > <!-- 依据username获得用户对象 --> < select id ="getUsersByName" resultMap ="ibatisTest" > select * from Ibatis where name=#value# </ select > <!-- 依据id获得用户对象 --> < select id ="getUsersById" resultMap ="ibatisTest" > select * 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 > <!-- 更新用户对象 --> < delete id ="updateUsers" parameterClass ="user" > update ibatis set name=#name# where id=#id# </ delete > </ sqlMap >
spring配置文件
<? xml version="1.0" encoding="UTF-8" ?> < 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 > 1234 </ value > </ property > < property name ="url" > < value > jdbc:mysql://localhost:3306/spring </ value > </ property > </ bean > < bean id ="sqlMapClient" class ="org.springframework.orm.ibatis.SqlMapClientFactoryBean" > <!-- 此处应注入ibatis配置文件,而非sqlMap文件,否则会出现“there is no statement.....异常” --> < property name ="configLocation" > < value > ch10/SpringAndIbatis/sqlMapConfig.xml </ value > </ property > </ bean > < bean id ="testDAO" class ="ch10.SpringAndIbatis.TestDAO" > < property name ="dataSource" > < ref bean ="dataSource" /> </ property > < property name ="sqlMapClient" > < ref bean ="sqlMapClient" /> </ property > </ bean > </ beans >
DAO实现类:
package ch10.SpringAndIbatis; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class TestDAO extends SqlMapClientDaoSupport implements IDAO ... { public void delete(String id) ...{ getSqlMapClientTemplate().delete("deleteUsers", id); } public Ibatis getById(String id) ...{ return (Ibatis)getSqlMapClientTemplate().queryForObject("getUsersById",id); } public Ibatis getByName(String name) ...{ return (Ibatis)getSqlMapClientTemplate().queryForObject("getUsersByName",name); } public List getList() ...{ return getSqlMapClientTemplate().queryForList("getAllUsers",null); } public void save(Ibatis ibatis) ...{ getSqlMapClientTemplate().insert("insertUsers",ibatis); } public void update(Ibatis ibatis) ...{ getSqlMapClientTemplate().update("updateUsers", ibatis); }}
domain对象
package ch10.SpringAndIbatis; public class Ibatis ... { private String id; private String name; 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()...{ }public Ibatis(String id, String name) ...{ super(); this.id = id; this.name = name;}}
測试代码:
package ch10.SpringAndIbatis; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test ... { /** *//** * @param args */ public static void main(String[] args) ...{ ApplicationContext context=new ClassPathXmlApplicationContext("ch10/SpringAndIbatis/applicationContext.xml"); TestDAO testDAOImpl=(TestDAO)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()); } //依据username获得用户对象 System.out.println("依据username获得用户对象"); Ibatis ibatis=testDAOImpl.getByName("1"); System.out.println(ibatis.getName()); //依据id获得用户对象 System.out.println("依据id获得用户对象"); Ibatis ibatis1=testDAOImpl.getById("1"); System.out.println(ibatis.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","3")); //新增用户 System.out.println("新增用户对象后"); List result2=new ArrayList(); result2=testDAOImpl.getList(); for (Iterator iter = result2.iterator(); iter.hasNext();) ...{ Ibatis element = (Ibatis) iter.next(); System.out.println(element.getName()); } System.out.println("-----------------"); //删除用户对象 System.out.println("-----------------"); System.out.println("删除用户对象前"); List result3=new ArrayList(); result3=testDAOImpl.getList(); for (Iterator iter = result3.iterator(); iter.hasNext();) ...{ Ibatis element = (Ibatis) iter.next(); System.out.println(element.getName()); } testDAOImpl.delete("3"); //删除用户 System.out.println("删除用户对象后"); List result4=new ArrayList(); result4=testDAOImpl.getList(); for (Iterator iter = result4.iterator(); iter.hasNext();) ...{ Ibatis element = (Ibatis) iter.next(); System.out.println(element.getName()); } System.out.println("-----------------"); //更新用户对象 System.out.println("-----------------"); System.out.println("更新用户对象前"); List result5=new ArrayList(); result5=testDAOImpl.getList(); for (Iterator iter = result5.iterator(); iter.hasNext();) ...{ Ibatis element = (Ibatis) iter.next(); System.out.println(element.getName()); } Ibatis ibatis3=testDAOImpl.getById("1"); ibatis3.setName("new1"); testDAOImpl.update(ibatis3);//更新用户对象 System.out.println("更新用户对象后"); List result6=new ArrayList(); result6=testDAOImpl.getList(); for (Iterator iter = result6.iterator(); iter.hasNext();) ...{ Ibatis element = (Ibatis) iter.next(); System.out.println(element.getName()); } System.out.println("-----------------"); }}
測试结果:
获得全查询列表
12依据username获得用户对象1依据id获得用户对象1-----------------新增用户对象前12新增用户对象后123----------------------------------删除用户对象前123删除用户对象后12----------------------------------更新用户对象前12更新用户对象后new12-----------------