ibatis与spring整合

2024-06-20 17:08
文章标签 ibatis spring 整合 java

本文主要是介绍ibatis与spring整合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

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

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

数据库脚本如下

[sql]  view plain copy
  1. create database ibatis;  
  2.   
  3. create table person(  
  4.   id int primary key,  
  5.   name varchar(10),  
  6.   sex int  
  7. );  
  8.    
[sql]  view plain copy
  1. create database ibatis;  
  2.   
  3. create table person(  
  4.   id int primary key,  
  5.   name varchar(10),  
  6.   sex int  
  7. );  
  8.    


 

一:要有一个PO类

   Person.Java

[java]  view plain copy
  1. package 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. }  
[java]  view plain copy
  1. package 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]  view plain copy
  1. package 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. }  
[java]  view plain copy
  1. package 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]  view plain copy
  1. package 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  
[java]  view plain copy
  1. package 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  
[java]  view plain copy
  1.                     //自己添加实现代码   
  2.     return null;  
  3. }  
  4.   
  5. @Override  
  6. public boolean updatePerson(Person person) {  
  7.     // TODO Auto-generated method stub  
[java]  view plain copy
  1.                     //自己添加实现代码  
  2.     return null;  
  3. }  
  4.   
  5. @Override  
  6. public boolean updatePerson(Person person) {  
  7.     // TODO Auto-generated method stub  
[java]  view plain copy
  1.                     //自己添加实现代码   
  2.     return false;  
  3. }  
[java]  view plain copy
  1.                     //自己添加实现代码  
  2.     return false;  
  3. }  

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

  SqlMapConfig.xml

 

[html]  view plain copy
  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>  
[html]  view plain copy
  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>  
[html]  view plain copy
  1.           <!--此处一定不能有<settings/> 标签-->  
  2.     <!--  <settings   cacheModelsEnabled="true"  
  3.                  enhancementEnabled="true"  
  4.                  lazyLoadingEnabled="true"  
  5.                  errorTracingEnabled="true"   
  6.                  maxRequests="32"  
  7.                  maxSessions="10"  
  8.                  maxTransactions="5"  
  9.                  useStatementNamespaces="false" />  -->  
  10.           
  11.     <sqlMap resource="po/Person.xml" />  
  12.       
  13. </sqlMapConfig>  
[html]  view plain copy
  1.           <!--此处一定不能有<settings/> 标签-->  
  2.     <!--  <settings   cacheModelsEnabled="true"  
  3.                  enhancementEnabled="true"  
  4.                  lazyLoadingEnabled="true"  
  5.                  errorTracingEnabled="true"   
  6.                  maxRequests="32"  
  7.                  maxSessions="10"  
  8.                  maxTransactions="5"  
  9.                  useStatementNamespaces="false" />  -->  
  10.           
  11.     <sqlMap resource="po/Person.xml" />  
  12.       
  13. </sqlMapConfig>  

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

 

五:Person.xml

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

[html]  view plain copy
  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>  
[html]  view plain copy
  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了

   

[html]  view plain copy
  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>  
[html]  view plain copy
  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进行测试。只测试了部分功能。

  

[html]  view plain copy
  1. package 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. }  
[html]  view plain copy
  1. package 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

   

[html]  view plain copy
  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     
[html]  view plain copy
  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包

   如没有,可网上下载。

  

[sql]  view plain copy
  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  
[sql]  view plain copy
  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  




下面是本人的目录结构图

这篇关于ibatis与spring整合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078740

相关文章

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus