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文件,该文件的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>              <!DOCTYPE mapper PUBLIC            "-//mybatis.org//DTD Mapper 3.0//EN"           "http://mybatis.org/dtd/mybatis-3-mapper.dtd">              <mapper namespace="User">           <select id="selectUser" parameterType="int" resultType="UserInfo">           <![CDATA[               select * from user_info where id = #{id}           ]]>           </select>       </mapper>    

(7)在src下面新建mybatis.cfg.xml文件,该文件的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>              <!DOCTYPE configuration PUBLIC            "-//mybatis.org//DTD Config 3.0//EN"           "http://mybatis.org/dtd/mybatis-3-config.dtd">              <configuration>           <typeAliases>               <typeAlias alias="UserInfo" type="com.user.UserInfo" />           </typeAliases>                      <mappers>               <mapper resource="com/user/sqlmap/UserInfo.xml" />           </mappers>       </configuration>      

(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文件,该文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>       <beans xmlns="http://www.springframework.org/schema/beans"           default-autowire="byName"           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-3.0.xsd">                  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">               <property name="driverClassName" value="oracle.jdbc.OracleDriver" />               <property name="url" value="jdbc:oracle:thin:@localhost:1521:SID" />               <property name="username" value="xxxx" />               <property name="password" value="xxxx" />               <property name="maxActive" value="100"></property>               <property name="maxIdle" value="30"></property>               <property name="maxWait" value="500"></property>               <property name="defaultAutoCommit" value="true"></property>           </bean>                      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">               <property name="configLocation" value="classpath:mybatis.cfg.xml"></property>               <property name="dataSource" ref="dataSource" />           </bean>                      <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">               <constructor-arg index="0" ref="sqlSessionFactory" />           </bean>                      <bean id="userService" class="com.user.UserService">              <property name="sqlSession" ref="sqlSessionTemplate" />           </bean>              </beans> 

(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: 张三      

转载于:https://blog.51cto.com/3001448/1205828

[置顶]       Mybatis技术(二) MyBatis-Spring相关推荐

  1. 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...

    相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...

  2. 窗口置顶(置于桌面所有程序之上)VC/MFC 怎么将窗口置顶

    软件界面全屏显示后,需要把窗体置于其他桌面程序之上,但总是置于其他弹出框之下,会造成用户忽略了导致用户不明什么原因. 百度查了好多方法总是失败. 后来查到了CSND的一个帖子http://bbs.cs ...

  3. Spring Boot(二)——MyBatis

    MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  4. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  5. 2021最新Java面试题(Hibernate面试题、MyBatis面试题、Spring面试题、SpringMVC面试题)

    1.什么是 ORM 框架? 答:对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境 ...

  6. jpa、mybatis、hibernate、spring data jpa区别

    在软件开发中,jdbc作为操作数据库的最基本api,它提供了操作数据库的方法.常见的数据库都实现了jdbc,具体的实现都是由数据库厂家来实现.但是jdbc不是一个orm框架(对象关系映射,简单理解为将 ...

  7. mybatis技术全攻略指南

    转载 作者: 夜泊 版本: v1.0 原文地址 第一章 mybatis简介 1.1 mybatis的历史 mybatis在2010年前叫ibatis是apache内部的一个项目,名字来源于intern ...

  8. MyBatis二 MyBatis常见面试题

    一 MyBatis是什么? MyBatis是一款优秀的持久层框架,一个半ORM (对象关系映射)框架,它支持定制化SQL.存储过程以及高级映射.MyBatis避免了几乎所有的JDBC代码和手动设置参数 ...

  9. (二)spring cloud微服务分布式云架构-整合企业架构的技术点

    spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢?Spring Cloud大型企业分布式微服务云架构源码请加一七九 ...

  10. 大数据WEB阶段Mybatis(二)

    Mybatis(二) 零.目录 Mybatis接口形式 Mybatis整合Spring Mybatis的缓存机制 手动封装结果集 一对一表操作 一对多表操作 多对多表操作 SpringMVC . Sp ...

最新文章

  1. 在jsp调试后端绑定对象
  2. RESTful架构和RESTful API设计总结
  3. matlab中fminunc函数使用方法,[分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB)...
  4. LiveVideoStack线上分享第五季(十一):Open WebRTC Toolkit实时视频分析系统
  5. mysql字符集排序规则_Mysql 字符集及排序规则
  6. (2)PCIE简介(学无止境)
  7. display属性值
  8. HDU 4389——X mod f(x)(数位DP)
  9. 汉字的字向量、词向量和表示学习(中文词向量)
  10. 深入剖析Java类加载机制
  11. Java枚举enum使用及相关的操作
  12. 了不起的GIS:GIS相关软件、框架、代码、资源等的合集
  13. 只要还在路上前行着的,那都是一个个闪闪发光惹人爱的人啊
  14. SU(seismic unix)常用操作001——sgy文件与su文件的相互转化
  15. 年轻人住房实录:有人住进毛坯房,有人选择二手房
  16. 2021年3月21日 星期日 二月初九 晴
  17. mysql 处理转义'_mysql转义处理
  18. 漫画趣解Linux内核
  19. 如涵控股完成私有化交易:赴美上市刚满两年,市值已缩水超七成
  20. 常用经方的应用体会­

热门文章

  1. JFreeChart应用实例-折线图
  2. 数据库系统概念学习笔记2
  3. 【转】Xcode7.1环境下上架iOS App到AppStore 流程 (Part 二)
  4. uestc 250 windy数(数位dp)
  5. Java this 心得
  6. JQuery官方学习资料(译):$( document ).ready()
  7. Envy-便当的显卡驱动布置剧本
  8. 通用四级联动下拉列表
  9. 测量一条反斜线的频率和质量n+m=9
  10. 【数理知识】《数值分析》李庆扬老师-第6章-解线性方程组的迭代法