下面将介绍使用spring+mybatis的开发样例:
首先,笔者创建的是一个maven工程,在开发先先导入相关的依赖jar:
pom.xml:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- spring3 相关依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.0.5.RELEASE</version> </dependency> <!-- spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.5.RELEASE</version> </dependency> <!-- mysql jdbc driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.13</version> </dependency> <!-- log 日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> <!-- mybatis-spring 插件 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.1</version> </dependency> <!-- mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>proxool</groupId> <artifactId>proxool</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>proxool</groupId> <artifactId>proxool-cglib</artifactId> <version>0.9.1</version> </dependency> <!-- servlet-jsp 依赖,为编译jsp时使用 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies>
web.xml中对spring和数据库连接池的配置:
<context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- needed for ContextLoaderListener --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!-- Bootstraps the root web application context before servlet initialization --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>spring3</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>spring3</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- database proxool config --> <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/proxool.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
在这里要注意,因为我使用了数据库连接池proxool,虽然已经设置servlet的启动级别是1,但是由于在servlet启动之前,spring(ContextLoaderListener)监听器已启动了,所以在spring监听启动时它会报一个找不到对应的数据源的SQLException。对于这个问题,本可以通过更改spring为servlet启动,并将启动级别设置为proxool配置加载之后解决:
<servlet> <servlet-name>contextConfigLocation</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet>
但是因为spring3以后就不支持使用servlet启动了,官方推荐使用listener启动applicationContext。所以这个方法在新版本不适合了,不过这个异常可以忽略,因为proxool在整个项目加载完成的时候的确以及完成了加载,所以在项目运行起来以后是不会报错的,开始报错是spring做的一个检查。
为了解决乱码问题最好在web.xml中加上这个配置:
<!-- character filter. use UTF8 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
下面是对spring3-servlet.xml的配置,它里面申明的bean都存放在webApplicationContext中:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" default-lazy-init="false" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.pinche.statistic.web"></context:component-scan> <!-- 启用spring mvc注解 --> <mvc:annotation-driven /> <!-- 静态资源访问问题 --> <mvc:default-servlet-handler /> <!-- Default ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/page/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 对抛给spring的异常的处理 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">error</prop> </props> </property> </bean> </beans>
下面对applicationContext.xml进行配置(这里使用了两个数据源):
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 数据源配置:这里配置了两个数据源dataSource_statistic和dataSource_pinche, 分别注入到_sqlSessionFactory_statistic和_sqlSessionFactory_pinche --> <bean id="dataSource_statistic" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 数据库连接 --> <property name="url" value="proxool.statistic" /> <!-- 这是不使用数据库连接池的配置方式,由于proxool只有在启动web应用的时候才能加载, 所以如果在初期开发阶段可以用这种简单的数据库连接方式,在通过 new FileSystemXmlApplicationContext("src/main/webapp/WEB-INF/applicationContext.xml") 获取到context,并进行测试。 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://192.168.1.168:3306/statistic"/> <property name="username" value="statistic"></property> <property name="password" value="statistic"></property> --> </bean> <bean id="dataSource_pinche" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- 数据库连接 --> <property name="url" value="proxool.pinche" /> </bean> <!-- 为mybatis-spring注入数据源 --> <bean name="_sqlSessionFactory_statistic" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource_statistic"></property> <!-- 注入别名的包名前缀,这样就可以在mybatis的文件中直接写类名不用写全名了 --> <property name="typeAliasesPackage" value="com.pinche.statistic.domain" /> </bean> <bean name="_sqlSessionFactory_pinche" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource_pinche"></property> <!-- 注入别名的包名前缀,这样就可以在mybatis的文件中直接写类名不用写全名了 --> <property name="typeAliasesPackage" value="com.pinche.statistic.domain" /> <!-- 该配置文件用来指定Mapper映射文件的位置 ,如果映射文件与相应的接口同名,且在同一路径下,那么可以不配置该选项--> <!--<property name="mapperLocations" value="src/UserMapper.xml"/>--> <!-- 该属性用来指定MyBatis的XML配置文件路径,跟Spring整合时, 编写MyBatis映射文件的目的无非是配置一下typeAlias、setting之类的 元素。不用在其中指定数据源,或者事务处理方式。就算配置了也会被忽略。 因为这些都是使用Spring中的配置。当然如果你不打算添加typeAlias 之 类的设置的话,你连MyBatis的配置文件都不用写,更不用配置这个属性了 --> <!-- <property name="configLocation" value=""/> --> </bean> <!-- 注册Mapper方式一 <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.pinche.statistic.mapper.ApplicationsMapper"/> <property name="sqlSessionFactory" ref="_sqlSessionFactory_statistic"/> </bean> --> <!-- 注册Mapper方式二:也可不指定特定mapper,而使用自动扫描包的方式来注册各种Mapper ,配置如下:--> <!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pinche.statistic.mapper"></property> </bean> --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pinche.statistic.dialstatistic.mapper"></property> <property name="sqlSessionFactoryBeanName" value="_sqlSessionFactory_pinche"></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pinche.statistic.mapper"></property> <property name="sqlSessionFactoryBeanName" value="_sqlSessionFactory_statistic"></property> </bean> <!-- 事务 --> <!-- 虽然mybatis也有自己的事务配置,但是配置了也没用,事务最终会交由spring控制, 由于项目没有用到可以注掉。 --> <!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource_statistic" /> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> --> <!-- 启用注解 --> <context:annotation-config /> <!-- 自动扫描注入 --> <context:component-scan base-package="com.pinche.statistic.dao, com.pinche.statistic.service" /> </beans>
通过以上的工作环境的配置完成,下一章继续介绍spring-mybatis集成开发的剩余内容。
相关推荐
SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+...
在Java开发领域,Spring...以上就是Spring集成Mybatis所需的jar包及集成过程中的关键配置和步骤。正确配置这些组件,可以让我们在享受Spring的便利性的同时,充分利用MyBatis的灵活性和高效性,实现高质量的Java应用。
在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...
在本文中,我们将探讨如何集成Spring框架与MyBatis,以构建一个完整的实例。这个实例是一个图书管理系统的简单实现,涉及的技术栈包括Spring、MyBatis、Maven和MySQL。以下是详细步骤: **一、创建Maven Web项目** ...
spring集成mybatis,资源包括: 中文版MyBatis 3 User Guide.pdf mybatis-spring集成指导.pdf Mybatis.pdf mybatis-3.2.8.jar mybatis-spring-1.2.2.jar
Spring MVC、Spring 和 MyBatis 是Java开发领域中三大核心框架,它们的组合在实际项目中广泛应用,构建了企业级Web应用的后端基础架构。本实战案例将深入讲解这三个框架如何协同工作,以实现高效的数据处理和业务...
在本项目中,“Spring整合Mybatis简单项目”旨在教授初学者如何将两个流行的Java框架——Spring和Mybatis结合,以实现一个简单的影视资源管理系统。这个系统可能会包括资源的增删改查、分类管理等功能,帮助用户高效...
这个压缩包是为了帮助开发者快速搭建一个支持Spring和MyBatis集成的项目环境。 描述中提到"基本常用jar包的整合",意味着这个压缩包包含了一些基础且常用的库,这些库是进行Spring和MyBatis整合所必需的。例如,...
为了更好地利用Windchill的功能,并将其与其他系统(如Spring框架和MyBatis等)进行有效集成,本文将详细介绍如何在Windchill环境中配置并使用Spring+MyBatis框架。 #### 二、Spring+MyBatis简介 Spring框架是一种...
### 三、Spring集成Mybatis的重要性 在实际的软件开发过程中,Spring与Mybatis的结合使用非常普遍。这种集成不仅可以提高开发效率,还能增强应用程序的性能和稳定性。通过Spring管理Mybatis的SqlSessionFactory或...
本篇将详细讲解如何将这两个框架进行集成,创建一个简单的Spring MyBatis demo。 首先,我们需要在项目中引入Spring和MyBatis的相关依赖。通常,这可以通过Maven或Gradle的配置文件来完成。对于Maven,可以在pom....
Spring 提供了一个全面的应用程序开发框架,而 MyBatis 是一个轻量级的持久层框架,它简化了 SQL 查询与Java 代码的绑定。本文将详细介绍如何将这两个框架集成,并探讨相关jar文件的作用。 首先,集成 Spring 和 ...
在实际项目中,开发者会创建一个 SqlSessionFactoryBean,配置数据源和MyBatis的相关配置文件,然后通过 Spring 的 Bean 注册机制将 SqlSessionFactory 注入到需要的地方。 在《spring+mybatis 企业应用实战》的...
总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
- 集成MyBatis:引入MyBatis的依赖,配置SqlSessionFactoryBean,创建MapperScannerConfigurer扫描Mapper接口。 - 创建MyBatis的Mapper接口和XML配置文件,定义SQL查询和操作。 - 在Spring MVC的Controller中,...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
Spring 和 MyBatis 是两个非常流行的 Java 开发框架,Spring 提供了全面的后端服务管理,而 MyBatis 则是一个优秀的持久层框架,它简化了 SQL 的操作。将两者进行集成,可以发挥各自的优势,实现高效、灵活的数据...
Spring作为一款强大的轻量级框架,提供了依赖注入、AOP(面向切面编程)等功能,而MyBatis-Plus则是在MyBatis的基础上进行扩展,简化了常见的CRUD操作,提升了开发效率。下面我们将详细介绍如何将Spring与MyBatis-...
总的来说,这个项目展示了如何利用Spring 4.3和MyBatis 3.4进行有效的集成,构建一个多模块、基于Maven的Web应用程序,提供了完整的SSM整合示例,有助于开发者理解和实践企业级应用的开发流程。