首页 > 编程语言 > 详细

Spring+Ibatis集成开发实例

时间:2015-02-12 12:07:49      阅读:357      评论:0      收藏:0      [点我收藏+]

首先简历数据库demo(本文选mysql)

数据库脚本:

 

技术分享CREATE TABLE `ibatis` (
技术分享  `id` 
varchar(20NOT NULL,
技术分享  `name` 
varchar(20default 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(
"-----------------");
技术分享        
技术分享     }

技术分享
技术分享}

技术分享

 

測试结果:

获得全查询列表
1
2
依据username获得用户对象
1
依据id获得用户对象
1
-----------------
新增用户对象前
1
2
新增用户对象后
1
2
3
-----------------
-----------------
删除用户对象前
1
2
3
删除用户对象后
1
2
-----------------
-----------------
更新用户对象前
1
2
更新用户对象后
new1
2
-----------------

Spring+Ibatis集成开发实例

原文:http://www.cnblogs.com/gcczhongduan/p/4287490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!