Mybaits为什么要整合Spring?
说白了其实就想使用Spring提供的服务,比如Spring的事务管理、Spring的IOC对Bean进行管理等。
Mybatis怎么整合Spring?
由于目前Spring官方还没有出整合Mybatis的特性,所以这里在Spring框架和MyBatis框架上再添加用于整合的框架“mybatis-spring-1.0.2.jar” (该框架时MyBatis官方自己出的)。
(1)新建一个Web工程,名称为MybatisSpring。
(2)将Spring3.0.3、Mybatis3.0.6、Mybatis-Spring1.0.2、log4j、Oracle驱动和DBCP连接池的JAR包放到Web工程的lib下面,具体的JAR包如下:
classes12.jar       log4j-1.2.16.jar       mybatis-3.0.6.jar       mybatis-spring-1.0.2.jar       org.springframework.aop-3.0.3.RELEASE.jar       org.springframework.asm-3.0.3.RELEASE.jar       org.springframework.aspects-3.0.3.RELEASE.jar       org.springframework.beans-3.0.3.RELEASE.jar       org.springframework.context-3.0.3.RELEASE.jar       org.springframework.context.support-3.0.3.RELEASE.jar       org.springframework.core-3.0.3.RELEASE.jar       org.springframework.expression-3.0.3.RELEASE.jar       org.springframework.jdbc-3.0.3.RELEASE.jar       org.springframework.transaction-3.0.3.RELEASE.jar       org.springframework.web-3.0.3.RELEASE.jar       commons-logging-1.1.1.jar       commons-dbcp-1.2.jar       commons-pool-1.4.jar
(3)在src下面新建log4j.properties文件,该文件的内容如下:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender       log4j.appender.stdout.layout=org.apache.log4j.PatternLayout       log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] -%m%n       log4j.logger.com.ibatis=debug       log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug       log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug       log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug       log4j.logger.java.sql.Connection=debug       log4j.logger.java.sql.Statement=debug       log4j.logger.java.sql.PreparedStatement=debug,stdout
(4)在Oracle数据库执行以下SQL,创建一个USER_INFO的表:
-- Create table       create table USER_INFO       (         ID          NUMBER(12) not null,         NAME        VARCHAR2(50)       );              --Insert data       insert into USER_INFO(ID,NAME) values(1,'张三');
(5)新建一个Java类UserInfo.java,该类的内容如下:
package com.user;              public class UserInfo {           private int id;           private String name;                  public UserInfo() {           }                  public UserInfo(String name) {               this(0, name);           }                  public UserInfo(int id, String name) {               this.id = id;               this.name = name;           }                  public int getId() {               return id;           }                  public void setId(int id) {               this.id = id;           }                  public String getName() {               return name;           }                  public void setName(String name) {               this.name = name;           }                  @Override           public String toString() {               return "ID: " + id + ", Name: " + name;           }       }
(6)在com.user.sqlmap下面新建UserInfo.xml文件,该文件的内容如下:
(7)在src下面新建mybatis.cfg.xml文件,该文件的内容如下:
(8)新建一个Java类UserService.java,该类的内容如下:
package com.user;              import org.mybatis.spring.SqlSessionTemplate;              public class UserService {           private SqlSessionTemplate  sqlSession;                      public SqlSessionTemplate getSqlSession() {               return sqlSession;           }                  public void setSqlSession(SqlSessionTemplate sqlSession) {               this.sqlSession = sqlSession;           }                      public UserInfo selectUser(){                 UserInfo user = null;                 try {                                 user = (UserInfo) sqlSession.selectOne("User.selectUser", "1");                           } catch (Exception e) {                                 e.printStackTrace();                           }                                         return user;                    }       }
(9)在src下面新建applicationContext.xml文件,该文件的内容如下:
(10)新建一个测试Java类UserInfoTest.java,该类的具体内容如下:
package com.user;              import java.io.IOException;              import org.springframework.context.ApplicationContext;       import org.springframework.context.support.ClassPathXmlApplicationContext;                            public class UserInfoTest {                  /**          * @param args          * @throws IOException           */           public static void main(String[] args) throws IOException {               ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");               UserService userService = (UserService)context.getBean("userService");               UserInfo userInfo = userService.selectUser();               System.out.println(userInfo);                  }              }
(11)右键UserInfoTest 类,选择Run As Application,运行MyBaits操作数据库。
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).       log4j:WARN Please initialize the log4j system properly.       log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.       2012-02-11 21:13:42,156 DEBUG [java.sql.PreparedStatement] -==>  Executing: select * from user_info where id = ?        2012-02-11 21:13:42,156 DEBUG [java.sql.PreparedStatement] -==> Parameters: 1(String)       ID: 1, Name: 张三