1. 程式人生 > >springmvc整合mybatis(SSM)

springmvc整合mybatis(SSM)

首先 需要引入pom的依賴

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

 

<groupId>nchu</groupId>

<artifactId>spring</artifactId>

<version>1.0-SNAPSHOT</version>

<packaging>war</packaging>

 

<dependencies>

<!--測試-->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

<scope>test</scope>

</dependency>

<!--日誌-->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.21</version>

</dependency>

<!--J2EE-->

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

</dependency>

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>jsp-api</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>jstl</artifactId>

<version>1.2</version>

</dependency>

<!--mysql驅動包-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.35</version>

</dependency>

<!--springframework-->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>4.2.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.2.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.2.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>4.2.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>4.2.6.RELEASE</version>

</dependency>

 

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjweaver</artifactId>

<version>1.8.9</version>

</dependency>

<!--其他需要的包-->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>3.4</version>

</dependency>

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.1</version>

</dependency>

 

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.1.1</version>

</dependency>

 

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.3</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.12</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.6</version>

</dependency>

 

<dependency>

<groupId>com.mchange</groupId>

<artifactId>mchange-commons-java</artifactId>

<version>0.2.3.1</version>

</dependency>

<dependency>

<groupId>c3p0</groupId>

<artifactId>c3p0</artifactId>

<version>0.9.1.2</version>

</dependency>

 

</dependencies>

 

<build>

<finalName>spring</finalName>

<resources>

<!--表示把java目錄下的有關xml檔案,properties檔案編譯/打包的時候放在resource目錄下-->

<resource>

<directory>${basedir}/src/main/java</directory>

<includes>

<include>**/*.properties</include>

<include>**/*.xml</include>

</includes>

</resource>

<resource>

<directory>${basedir}/src/main/resources</directory>

</resource>

</resources>

 

<plugins>

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.2</version>

<executions>

<execution>

<id>Generate MyBatis Artifacts</id>

<goals>

<goal>generate</goal>

</goals>

</execution>

</executions>

<configuration>

<!-- generator 工具配置檔案的位置 -->

<configurationFile>src/main/resources/mybatis/mybatis-generator/generatorConfig.xml</configurationFile>

<verbose>true</verbose>

<overwrite>true</overwrite>

</configuration>

<dependencies>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.34</version>

</dependency>

<dependency>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-core</artifactId>

<version>1.3.2</version>

</dependency>

</dependencies>

</plugin>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<classifier>exec</classifier>

</configuration>

</plugin>

</plugins>

 

</build>

 

</project>

 

 

然後配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

 

 

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/spring-*.xml</param-value> <!--spring-*.xml 包括 配置dao service -->

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<!--配置dispatcher.xml作為mvc的配置檔案-->

<param-name>contextConfigLocation</param-name>

<param-value>classpath:/spring/dispatcher-web.xml</param-value> <!--配置的是web層 也是dispatcher-->

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

 

<welcome-file-list>

<welcome-file>index</welcome-file>

</welcome-file-list>

 

<!--預設首頁需要這兩個一起配置-->

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>/index</url-pattern>

</servlet-mapping>

 

</web-app>

 

 

 

 

然後配置dispather-web

<?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:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd">

 

<!-- 預設使用基於註釋的介面卡和對映器 -->

<mvc:annotation-driven/>

<!-- 只把動態資訊當做controller處理,忽略靜態資訊 -->

<mvc:default-servlet-handler/>

<!-- 自動掃描包中的Controlller 開啟自動掃描含有@Controller的註解的類 -->

<context:component-scan base-package="sell.controller"/>

 

<!--HandlerMapping 無需配置,springmvc可以預設啟動-->

 

<!--靜態資源對映-->

<!--本專案把靜態資源放在了WEB-INF的statics目錄下,資源對映如下-->

<mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/>

<mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/>

<mvc:resources mapping="/image/**" location="/WEB-INF/statics/image/"/>

 

 

 

 

<!-- 對模型檢視名稱的解析,即在模型檢視名稱新增前後綴(如果最後一個還是表示資料夾,則最後的斜槓不要漏了) 使用JSP-->

<!-- 預設的檢視解析器 在上邊的解析錯誤時使用 (預設使用html)- -->

<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="prefix" value="/WEB-INF/view/"/><!--設定JSP檔案的目錄位置-->

<property name="suffix" value=".jsp"/>

</bean>

 

 

</beans>

 

 

 

配置spring-service.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: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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- 掃描service包下所有使用註解的型別 -->

<context:component-scan base-package="sell.service" />

 

<!-- 配置事務管理器 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<!-- 注入資料庫連線池 -->

<property name="dataSource" ref="dataSource" />

</bean>

 

<!-- 配置基於註解的宣告式事務 -->

<tx:annotation-driven/>

</beans>

 

 

最後 最複雜的 要和資料庫以及mybatis進行整合的部分 spring-dao.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:context="http://www.springframework.org/schema/context"

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">

<!-- 配置整合mybatis過程 -->

<!-- 1.配置資料庫相關引數properties的屬性:${url} 這裡要在resouce資料夾裡建立jdbc.properties 並寫上資料庫連線資訊-->

<context:property-placeholder location="classpath:jdbc.properties" />

 

<!-- 2.資料庫連線池 -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<!-- 配置連線池屬性 -->

<property name="driverClass" value="${jdbc.driver}" />

<property name="jdbcUrl" value="${jdbc.url}" />

<property name="user" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

 

<!-- c3p0連線池的私有屬性 -->

<property name="maxPoolSize" value="30" />

<property name="minPoolSize" value="10" />

<!-- 關閉連線後不自動commit -->

<property name="autoCommitOnClose" value="false" />

<!-- 獲取連線超時時間 -->

<property name="checkoutTimeout" value="10000" />

<!-- 當獲取連線失敗重試次數 -->

<property name="acquireRetryAttempts" value="2" />

</bean>

 

<!-- 3.配置SqlSessionFactory物件 這裡的部分是要和mybaitis整合的部分 需要配置mybatis-config.xml 和mybatis-mapper.xml-->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!-- 注入資料庫連線池 -->

<property name="dataSource" ref="dataSource" />

<!-- 配置MyBaties全域性配置檔案:mybatis-config.xml -->

<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />

<!-- 掃描entity包 使用別名 寫實體所在的包 -->

<property name="typeAliasesPackage" value="sell.pojo" />

<!-- 掃描sql配置檔案:mapper需要的xml檔案 *.xml表示裡面的所有xml檔案 -->

<property name="mapperLocations" value="classpath:mybatis-mapper/*.xml" />

</bean>

 

<!-- 4.配置掃描Dao介面包,動態實現Dao介面,注入到spring容器中 DAO介面即是mapper介面 這裡寫mapper介面類所在的包 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<!-- 注入sqlSessionFactory -->

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

<!-- 給出需要掃描Dao介面包 -->

<property name="basePackage" value="sell.dao" />

</bean>

</beans>

 

 

 

最後 補完 jdbc.properties mybatis-config.xml 和mybatis-mapper.xml 的內容

 

jdbc.properties

 

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/sell?useUnicode=true&characterEncoding=utf8

jdbc.username=root

jdbc.password=xihanzhiwen

 

 

mybatis-config

 

 

<?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>

<!-- 配置全域性屬性 -->

<settings>

<!-- 使用jdbc的getGeneratedKeys獲取資料庫自增主鍵值 -->

<setting name="useGeneratedKeys" value="true" />

 

<!-- 使用列別名替換列名 預設:true -->

<setting name="useColumnLabel" value="true" />

 

<!-- 開啟駝峰命名轉換:Table{create_time} -> Entity{createTime} -->

<setting name="mapUnderscoreToCamelCase" value="true" />

</settings>

</configuration>

 

 

mybatis-mapper.xml

 

裡面就是mybatis的sql配置檔案