`

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




下面是本人的目录结构图


分享到:
评论

相关推荐

    struts2+spring+ibatis整合项目实例

    2. **Spring**:Spring框架是企业级Java应用的核心容器,提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。它还包含了数据访问、Web、事务管理等多个模块。在与Struts2和iBatis的整合中,Spring主要负责组件的...

    struts2+spring+ibatis项目实例

    Spring框架则是一个全面的后端解决方案,包括依赖注入(DI)、面向切面编程(AOP)、事务管理等核心特性。在本项目中,Spring可以管理Struts2中的Action实例,通过DI实现对象间的协作。同时,Spring的AOP功能可以...

    spring3 ibatis整合实例

    这个项目实例对于初学者来说是一份宝贵的资源,通过实际操作,可以更好地理解和掌握Spring3与iBatis的整合应用。记得仔细阅读项目文档,理解每一个配置和代码的作用,这将对你的编程技能提升大有裨益。

    spring与ibatis整合集成实例

    在整合 Spring 和 iBATIS 进行项目开发时,主要涉及以下几个关键知识点: 1. **依赖注入 (Dependency Injection, DI)**:Spring 的核心特性之一,通过 DI 可以使代码更松耦合,易于测试和维护。在整合 iBATIS 时,...

    struts1+spring2.0+ibatis整合实例

    在这个"struts1+spring2.0+ibatis整合实例"中,开发者创建了一个小型的应用,演示了如何将这三个框架集成在一起,以构建一个功能完整的Web应用。这个实例中,MySQL5被选为后端数据库,用于存储数据。 首先,让我们...

    Spring对IBatis的整合

    Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis访问代码,并且提供了与JdbcTemplate一致的异常处理方式。这种...

    spring+ibatis配置实例

    总结来说,"spring+ibatis配置实例"是一个完整的Java Web项目,它展示了如何利用Spring框架进行服务层和控制层的构建,结合iBatis进行数据访问。通过学习这个实例,开发者可以更好地理解Spring和iBatis的整合使用,...

    Struts2+spring+ibatis三大框架整合实例

    其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和面向切面编程(AOP),便于管理对象和事务。Spring还包含了一个强大的数据访问抽象层,可以集成多种持久化技术,包括iBatis。在Spring中,我们可以创建...

    Spring 整合 iBATIS 文档 详解 加 源代码

    本文将深入探讨Spring整合iBATIS的过程,以及如何通过源代码理解和实践这一过程。 首先,了解iBATIS的基本概念。iBATIS是一个SQL映射框架,它将SQL语句与Java代码分离,使得开发者可以专注于SQL的编写,同时避免了...

    Spring整合iBatis

    在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而iBatis作为一个轻量级的持久层框架,以其灵活的SQL映射机制受到开发者喜爱。将两者整合,可以充分利用Spring的管理能力,简化数据库...

    struts2+spring+ibatis整合实例

    在整合iBatis时,Spring可以配置SqlSessionFactoryBean,管理数据库连接池和SqlSession工厂。然后通过Mapper接口,将SQL操作声明式地定义在XML映射文件中,Spring会自动将这些接口与XML文件关联,使得Service层可以...

    webwork+spring+ibatis简单实例

    Spring框架可以与iBatis无缝集成,实现数据库操作的声明式事务管理。 在"webwork+spring+ibatis简单实例"中,可能包含以下步骤: 1. **项目结构**:首先,项目会有一个标准的Maven或Gradle构建文件,用于管理和...

    Struts2+Spring2+iBatis开发实例程序

    在这个实例程序中,"Struts2+Spring2+iBatis开发实例程序"显然是一个整合了这三大框架的实际项目,用于演示或教学如何将这些技术有效地集成在一起。 Struts2作为MVC(模型-视图-控制器)框架,负责处理HTTP请求,...

    struts2_mybatis_spring_框架实例整合_数据库 文档

    6. 数据库设计:根据业务需求设计数据库表结构,创建相应的数据库文件,例如struts_ibatis_spring_框架整合_数据库.sql,用于初始化数据库。 7. 文档编写:提供详细的整合过程文档,解释每个步骤的具体操作,以及...

    maven构建spring struts2 ibatis velocity小实例

    Spring框架是企业级应用开发的基石,提供了强大的依赖注入(DI)和面向切面编程(AOP)功能。在本实例中,Spring被用来管理Bean的生命周期和组装对象间的依赖关系。通过Spring的ApplicationContext,我们可以方便地...

    struts2+spring+ibatis框架实例

    **Spring框架** Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,有助于简化代码结构和提高可测试性。在本实例中,Spring负责管理Bean的生命周期和事务管理。通过Spring的...

    ibatis+Spring+struts2整合实例

    2. **Spring框架**:Spring是一个全面的企业应用框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能。在本实例中,Spring作为容器管理iBATIS和Struts2的bean,负责各组件间的协调和事务管理。Spring还提供了一...

    Spring整合ibatis

    - **Spring框架**:Spring是一个开源的Java平台框架,它为开发Java应用程序提供了一种全面的基础架构支持。Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理等。 - **ibatis**(现更名为MyBatis...

    Spring MVC+ibatis+oracle框架整合

    Spring MVC是Spring框架的一部分,是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了丰富的功能,如依赖注入、数据验证、本地化、国际化等。通过使用Spring MVC,开发者可以将业务逻辑、用户界面和...

Global site tag (gtag.js) - Google Analytics