spring框架整合ibatis的项目实例代码

spring框架整合ibatis的项目实例代码 
博客分类: java
spring

ibatisspring整合 .



原创整理不易,转载请注明出处:spring框架整合ibatis的项目实例代码

代码下载地址:http://www.zuidaima.com/share/1780211932679168.htm



这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的,但程序一旦跑起来了,突然有一种豁然开朗,重见天日,感觉生活很美好的感觉!,也许,这就是那一行行的代码带给我们的不同享受吧。呵呵,废话就不多说了。

在此先引用几句别人的资料。。。

Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建。

与hibernate类似,Spring提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它所提供的SqlMapClientTemplate对象来操纵数据库。看起来这些概念都与hibernate类似。

通过SqlMapClientTemplate来操纵数据库的CRUD是没有问题的。此篇文章没有进行事务处理。

本文采用ibatis+spring+mysql 进行编写

数据库脚本如下
create database ibatis; 
     
create table person( 
      id int primary key, 
      name varchar(10), 
      sex int 
);



一:要有一个PO类



   Person.java



Java代码 复制代码 收藏代码
1.package com.zuidaima.po;   
2.   
3.import java.io.Serializable;   
4.   
5.public class Person implements Serializable{   
6.    /** 
7.     *  
8.     */   
9.    private static final long serialVersionUID = -517413165963030507L;   
10.    /** 
11.     *  
12.     */   
13.    private int id;   
14.    private String name;   
15.    private int sex;   
16.       
17.    public Person(){   
18.           
19.    }   
20.    public Person(int id,String name,int sex){   
21.        this.id = id;   
22.        this.name = name;   
23.        this.sex = sex;   
24.    }   
25.    public int getId() {   
26.        return id;   
27.    }   
28.    public void setId(int id) {   
29.        this.id = id;   
30.    }   
31.    public String getName() {   
32.        return name;   
33.    }   
34.    public void setName(String name) {   
35.        this.name = name;   
36.    }   
37.    public int getSex() {   
38.        return sex;   
39.    }   
40.    public void setSex(int sex) {   
41.        this.sex = sex;   
42.    }   
43.       
44.}   



二:DAO接口类

    IAction.java



Java代码 复制代码 收藏代码
1.package com.zuidaima.dao;   
2.   
3.import java.util.List;   
4.   
5.import po.Person;   
6.   
7.public interface IAction {   
8.    public boolean insertPerson(Person person);   //添加    
9.    public boolean deleteById(int id);            //删除    
10.    public boolean updatePerson(Person person);    //修改    
11.    public Person queryById(int id);              //根据ID查询    
12.    public List<Person> queryAllPerson();         //查询全部    
13.}   








三:DAO实现类
  

   ActionImpl.java 此类继承SqlMapClientSupport 实现IAction接口



Java代码 复制代码 收藏代码
1.package com.zuidaima.dao.impl;   
2.   
3.import java.io.IOException;   
4.import java.io.Reader;   
5.import java.sql.SQLException;   
6.import java.util.List;   
7.   
8.import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;   
9.   
10.import com.ibatis.common.resources.Resources;   
11.import com.ibatis.sqlmap.client.SqlMapClient;   
12.import com.ibatis.sqlmap.client.SqlMapClientBuilder;   
13.import com.ibatis.sqlmap.client.SqlMapSession;   
14.   
15.import po.Person;   
16.import dao.IAction;   
17.   
18.public class ActionImpl extends SqlMapClientDaoSupport implements IAction {   
19.   
20.    //添加操作    
21.    @Override   
22.    public boolean insertPerson(Person person) {   
23.        // TODO Auto-generated method stub    
24.        getSqlMapClientTemplate().insert("insertPerson",person);   
25.        return false;   
26.    }   
27.       
28.    //删除操作    
29.    @Override   
30.    public boolean deleteById(int id) {   
31.        // TODO Auto-generated method stub    
32.        getSqlMapClientTemplate().delete("deleteById", id);   
33.        return false;   
34.    }   
35.   
36.       
37.   
38.    //查询全部    
39.    @Override   
40.    public List<Person> queryAllPerson() {   
41.        // TODO Auto-generated method stub    
42.        List<Person> persons = getSqlMapClientTemplate().queryForList("queryAllPerson");   
43.        return persons;   
44.    }   
45.   
46.    @Override   
47.    public Person queryById(int id) {   
48.        // TODO Auto-generated method stub   
49. 
50. 
51.                    //自己添加实现代码    
52.    return null;   
53.}   
54.   
55.@Override   
56.public boolean updatePerson(Person person) {   
57.    // TODO Auto-generated method stub   
58. 
59. 
60.                    //自己添加实现代码    
61.    return false;   
62.}   




四:既然是ibatis spring整合 那就必须要有ibatis的配置文件



  SqlMapConfig.xml



Xml代码 复制代码 收藏代码
1.<?xml version="1.0" encoding="UTF-8" ?>   
2.<!DOCTYPE sqlMapConfig   
3.    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"   
4.    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">    
5.    <sqlMapConfig> 
6.<!--此处一定不能有<settings/> 标签-->   
7.    <!--  <settings   cacheModelsEnabled="true"   
8.                 enhancementEnabled="true"   
9.                 lazyLoadingEnabled="true"   
10.                 errorTracingEnabled="true"    
11.                 maxRequests="32"   
12.                 maxSessions="10"   
13.                 maxTransactions="5"   
14.                 useStatementNamespaces="false" />  -->   
15.           
16.    <sqlMap resource="po/Person.xml" />   
17.       
18.</sqlMapConfig>     


SqlMapClient.xml里本应该有数据源的配置的 使用spring之后数据源的配置移植到了spring上



五:Person.xml

   里面配置了一下对数据的增删改查操作



Xml代码 复制代码 收藏代码
1.<?xml version="1.0" encoding="UTF-8"?>   
2.<!DOCTYPE sqlMap   
3.PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"   
4."http://www.ibatis.com/dtd/sql-map-2.dtd">    
5.<sqlMap>   
6.    <typeAlias alias="person" type="po.Person" />   
7.       
8.    <insert id="insertPerson" parameterClass="po.Person">   
9.       <![CDATA[ 
10.           insert into person values (#id#,#name#,#sex#) 
11.       ]]>   
12.    </insert>   
13.       
14.    <delete id="deleteById" parameterClass="int">   
15.        <![CDATA[ 
16.           delete from person where id=#id# 
17.        ]]>   
18.    </delete>   
19.       
20.    <update id="updatePerson" parameterClass="po.Person">   
21.         <![CDATA[ 
22.               update person set name=#name#,sex=#sex# where id=#id# 
23.         ]]>   
24.    </update>   
25.       
26.    <select id="queryById" parameterClass="int" resultClass="po.Person">   
27.         <![CDATA[ 
28.              select * from person where id=#id# 
29.         ]]>   
30.    </select>   
31.       
32.    <select id="queryAllPerson" cacheModel="personCache" resultClass="po.Person">   
33.         <![CDATA[ 
34.               select * from person 
35.         ]]>   
36.    </select>   
37.</sqlMap>   




六:下面最重要的也就是配置applicationContext.xml了





Xml代码 复制代码 收藏代码
1.<?xml version="1.0" encoding="UTF-8"?>   
2.<beans xmlns="http://www.springframework.org/schema/beans"   
3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"   
4.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">   
5.   
6.    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">   
7.        <property name="driverClassName" value="com.mysql.jdbc.Driver" />   
8.        <property name="url" value="jdbc:mysql://localhost:3306/ibatis" />   
9.        <property name="username" value="root" />   
10.        <property name="password" value="1" />   
11.    </bean>   
12.   
13.    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">   
14.        <property name="configLocation">  <!-- name 为configLocation或s  不可为其他 -->   
15.            <value>SqlMapConfig.xml</value> <!-- 不区分大小写,路径前可加'/' -->   
16.        </property>   
17.           
18.        <!-- dataSource不是必需 -->   
19.        <property name="dataSource">   
20.            <ref local="dataSource" />   
21.        </property>   
22.    </bean>   
23.   
24.    <bean id="personDAO" class="dao.impl.ActionImpl">   
25.        <!-- dataSource不是必需 -->   
26.        <property name="dataSource">   
27.            <ref local="dataSource" />   
28.        </property>   
29.           
30.        <!-- sqlMapClient必需 -->   
31.        <property name="sqlMapClient">   
32.            <ref local="sqlMapClient"/>   
33.        </property>      
34.    </bean>   
35.   
36.    <!-- transactionManager不是必需  -->   
37.    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
38.        <property name="dataSource">   
39.            <ref local="dataSource" />   
40.        </property>   
41.    </bean>   
42.</beans>   





注释里面的必需或不是必需都是本人多次试验的,至于为什么是必需不必需 其中的原理我也不是能太讲清楚,在此先是这些写罢了。



里面的每一个节点,属性,如果不太理解,可以上网查一些其他资料。



七:编写测试类

   此类利用junit进行测试。只测试了部分功能。



Java代码 复制代码 收藏代码
1.package com.zuidaima.dao.impl;   
2.   
3.import java.util.Iterator;   
4.import java.util.List;   
5.   
6.import org.junit.Test;   
7.import org.springframework.context.ApplicationContext;   
8.import org.springframework.context.support.ClassPathXmlApplicationContext;   
9.   
10.import po.Person;   
11.   
12.   
13.public class ActionImplTest {   
14.    private static ApplicationContext applicationContext = null;   //提供静态ApplicationContext   
15.    static{   
16.        applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //实例化   
17.    }   
18.    //添加操作   
19.    @Test   
20.    public void testInsertPerson(){   
21.        ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");   
22.        s.insertPerson(new Person(1,"zhangsan",2));   
23.    }   
24.       
25.    //删除操作   
26.    @Test   
27.    public void testDeletePerson(){   
28.        ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");   
29.        s.deleteById(1);   
30.    }   
31.       
32.    //查询全部   
33.    @Test   
34.    public void testQueryAllPerson(){   
35.        ActionImpl s = (ActionImpl)applicationContext.getBean("personDAO");   
36.        List<Person> persons = s.queryAllPerson();   
37.        //System.out.println(persons.size());   
38.        Iterator<Person> ite = persons.iterator();   
39.        while(ite.hasNext()){   
40.            Person person = ite.next();   
41.            System.out.print("ID: "+person.getId());   
42.            System.out.print(" Name: "+person.getName());   
43.            System.out.print(" Sex: "+person.getSex());   
44.            System.out.println();   
45.        }   
46.    }   
47.}   


八:如需记录日志 则要log4j.properties



Xml代码 复制代码 收藏代码
1.#log4j.rootLogger=DEBUG, stdout   
2.#log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
3.#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
4.#log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n   
5.#log4j.logger.java.sql.PreparedStatement=DEBUG   
6.log4j.rootLogger=DEBUG, stdout, fileout       
7.#log4j.logger.test=info      
8.#log4j.logger.org.apache.jasper = DEBUG      
9.#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG      
10.#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG      
11.     
12.log4j.logger.com.fiscal = DEBUG      
13.log4j.logger.com.system = DEBUG      
14.     
15.log4j.logger.com.ibatis = DEBUG      
16.log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG      
17.log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG      
18.log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG      
19.log4j.logger.java.sql.Connection = DEBUG      
20.log4j.logger.java.sql.Statement = DEBUG      
21.log4j.logger.java.sql.PreparedStatement = DEBUG, fileout       
22.log4j.logger.java.sql.ResultSet = DEBUG      
23.     
24.log4j.appender.stdout=org.apache.log4j.ConsoleAppender        
25.     
26.log4j.appender.fileout=org.apache.log4j.RollingFileAppender       
27.log4j.appender.fileout.File=C\:\\ibatis.log        
28.log4j.appender.fileout.MaxFileSize=10000KB        
29.     
30.log4j.appender.stdout.layout=org.apache.log4j.PatternLayout        
31.log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} \:%m%n        
32.log4j.appender.fileout.layout=org.apache.log4j.PatternLayout        
33.log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH\:mm\:ss} \:%m%n       
34.     
35.#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout        
36.     
37.# log4j.logger.org=info      



 

九:已经到最后了,我觉得这最后的才是最最重要的,就是一下jar包问题

   我调试了很长时间  一大部分时间是jar问题

   在此列出一下我认为能够跑起来这个小程序所需的一下jar包

   如没有,可网上下载。
1.ibaits-2.3.4.jar 
2.spring.jar 
3.mysql-connector-java-bin.jar 
4.commons-dbcp-1.4.jar 
5.commons-pool-1.5.6.jar 
6.spring-orm-2.5.6.jar //已集成到spring.jar里 
7.//记录日志所需 
8. log4j-1.2.15.jar 
9.commons-logging.jar




下面是本人的目录结构图


你可能感兴趣的:(spring,ibatis,整合 .)