SpringMVC创建web项目基础之(二)——Spring MVC与Mybatis整合详解

时间:2023-02-03 10:02:33

整个项目运用maven进行管理,如果你还不会使用maven请看我的另一篇文章:

SpringMVC创建web项目基础之(一)--Maven项目管理利器

先来看看整合所需要的jar包,这里用maven的pom.xml文件来显示

<!-- 依赖的Jar包 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<!-- springMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<!-- mybitis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.5</version>
</dependency>
<!-- mybitis与spring整合包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- mysql数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<!-- 数据库连接池c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
</dependency>
<!-- servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>

</dependencies>

下面我们先来配置数据库配置文件:db.properties

jdbc.driverLocation=你的数据库连接驱动所在的本地绝对路径
jdbc.driver=你的数据库连接驱动所在包完整路径
jdbc.url=数据库请求路径
jdbc.username=用户名
jdbc.password=密码

Mybatis还需要sqlMapConfig.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></configuration>

通常我们会在这个文件里会设置typeAliases属性但是与SpringMVC整合后会被Spring的mapper扫描器所取代因此也不用配置。

接下来就需要配置最重要的Spring中applicationContext.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- 加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则 -->
<context:property-placeholder location="classpath:db.properties" />

<!-- 配置数据源 ,c3p0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="initialPoolSize" value="10" />
<property name="maxIdleTime" value="60" />
<property name="acquireRetryDelay" value="1000" />
<property name="acquireIncrement" value="2" />
<property name="maxStatements" value="100" />
<property name="idleConnectionTestPeriod" value="60" />
<property name="acquireRetryAttempts" value="0" />
<property name="breakAfterAcquireFailure" value="false" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource"
p:configLocation="classpath:mybatis/sqlMapConfig.xml"
p:mapperLocations="classpath:com/bubblyyi/app/*/dao/*.xml"
p:typeAliasesPackage="com.bubblyyi.app.*.model"/>

<!-- mapper批量扫描器 -->
<!-- 使用前提是mapper.java和mapper.xml文件名称保持一致且在一个包下 -->
<!--
注意这里需要配置sqlSessionFactoryBeanName而不是sqlSessionFactoryBean
因为如果配错则上面context:property-placeholder配置加载扫描db.properties文件就不起作用了
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage="com.bubblyyi.app.**.dao"
p:sqlSessionFactoryBeanName="sqlSessionFactory"/>
</beans>

需要注意的是:

在配置mapper批量扫描器的时候需要配置sqlSessionFactoryBeanName而不是sqlSessionFactoryBean,因为如果配错则上面context:property-placeholder配置加载扫描db.properties文件就不起作用了,还有就是该扫描器使用前提是mapper.java和mapper.xml文件名称保持一致且在一个包下。

最后呢我建议文件目录按照以下格式来建立:

SpringMVC创建web项目基础之(二)——Spring MVC与Mybatis整合详解

 

contriller中存放控制器相关代码。

dao中存放mapper.java和mapper.xml文件,需要注意文件名称保持一致。

model中存放数据模型

service中存放后台处理相关代码。

至此整合完成!

如果你喜欢我的文章欢迎关注我的博客http://www.bubblyyi.com