spring+springmvc+mybatis構建系統

  今天和你們分享的是spring+springmvc+mybatis搭建框架的例子,說到這裏不得不說如今市面上一流大公司還有不少用這種架子,創業型公司大部分都用springboot集成的mvc+mybatis來構建應用,造成了兩種「趨勢」沒有統一;所以在後面會有一章springboot+mybatis構建系統的文章,但願多多支持。html

  • mybatis-generator逆向工程生成實體和配置文件
  • spring+springmvc+mybatis一系列配置
  • 訪問靜態資源的兩種配置方式
  • 引入事物註解
  • 打成war包部署到tomcat

mybatis-generator逆向工程生成實體和配置文件

  java項目中mybatis很經常使用,要說靠手動來配置實體,映射文件那可繁瑣了,爲此有了快速生成實體和mapper文件的generator工具;首先咱們新建項目,初始化項目結構如:java

  

  而後建立名稱mybatis-generator.xml的配置文件,裏面內容以下:mysql

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 3         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 4 <generatorConfiguration>
 5     <!--引入數據源-->
 6     <!--<properties resource="classpath:application.properties"/>-->
 7     <!--<properties url="D:\my_study\study_java\springcloud_demo\mybatis_demo\src\main\resources\application.properties"/>-->
 8     <context id="DB2Tables" targetRuntime="MyBatis3">
 9         <!--自動實現Serializable接口-->
10         <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
11         <!-- 去除自動生成的註釋 -->
12         <commentGenerator>
13             <property name="suppressAllComments" value="true"/>
14             <property name="suppressDate" value="true"/>
15         </commentGenerator>
16         <!--數據庫基本信息-->
17         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
18                         connectionURL="jdbc:mysql://119.111.111.111:3306/shenniu003_db"
19                         userId="root"
20                         password="root">
21         </jdbcConnection>
22         <javaTypeResolver>
23             <property name="forceBigDecimals" value="false"/>
24         </javaTypeResolver>
25         <!--生成實體類的位置以及包的名字-->
26         <javaModelGenerator targetPackage="model" targetProject="src\main\java">
27             <property name="enableSubPackages" value="true"/>
28             <property name="trimStrings" value="true"/>
29         </javaModelGenerator>
30         <!--生成map的位置-->
31         <sqlMapGenerator targetPackage="dao.mapper.xml" targetProject="src\main\java">
32             <property name="enableSubPackages" value="true"/>
33         </sqlMapGenerator>
34         <!--生成Dao類存放位置-->
35         <javaClientGenerator type="XMLMAPPER" targetPackage="dao.mapper"  targetProject="src\main\java">
36             <property name="enableSubPackages" value="true"/>
37         </javaClientGenerator>
38 
39         <!--&lt;!&ndash;對應的表名,以及實體名&ndash;&gt;-->
40         <table tableName="StoreUser" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
41         enableUpdateByExample="false" >
42         </table>
43     </context>
44 </generatorConfiguration>

  具體節點表示的做用請看備註信息,當有了配置文件咱們有兩種方式能夠執行經過這個xml配置來生成mapper等文件,mvn是java開發很好的一種工具,這裏也使用mvn來運行這個配置工具,僅僅須要在pom.xml中以下配置:web

 1       <!--代碼生成器-->
 2                 <plugin>
 3                     <groupId>org.mybatis.generator</groupId>
 4                     <artifactId>mybatis-generator-maven-plugin</artifactId>
 5                     <version>1.3.5</version>
 6                     <dependencies>
 7                         <dependency>
 8                             <groupId>mysql</groupId>
 9                             <artifactId>mysql-connector-java</artifactId>
10                             <version>5.1.35</version>
11                         </dependency>
12                         <dependency>
13                             <groupId>org.mybatis.generator</groupId>
14                             <artifactId>mybatis-generator-core</artifactId>
15                             <version>1.3.5</version>
16                         </dependency>
17                     </dependencies>
18 
19                     <!--做爲DOM對象的配置-->
20                     <configuration>
21                         <!--容許移動生成的文件-->
22                         <verbose>true</verbose>
23                         <!--是否覆蓋-->
24                         <overwrite>true</overwrite>
25                         <!--自動生成的配置-->
26                         <configurationFile>
27                             ${basedir}/src/main/resources/mybatis-generator.xml
28                         </configurationFile>
29                     </configuration>
30                 </plugin>

  經過mvn的mybatis-generator-maven-plugin插件來運行生成,當配置完成mvn後,咱們能在idea中的mvn管理器中看到以下選項:spring

  

  雙擊運行便可,只要數據庫鏈接沒問題,就能正常生成文件:sql

  

spring+springmvc+mybatis一系列配置

  要說這個ssm已經流行了不少年了,大公司也還在繼續使用它,小型創業公司估計都往springboot上去靠了,由於springboot集成了不少東西帶來了不少便利;上家公司的某java中級工程師都還沒用過springboot,真讓人吃驚;在resources目錄中建立一個spring的文件夾,裏面分別存放3個文件:spring-web.xml,spring-service.xml,spring-dao.xml;代碼以此以下,spring-web.xml:數據庫

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
 4        xmlns:context="http://www.springframework.org/schema/context"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 6     <!--配置spring mvc-->
 7     <!--開啓springmvc註解模式 xml,json的默認讀寫支持-->
 8     <mvc:annotation-driven/>
 9 
10     <!--默認servlet配置靜態資源-->
11     <mvc:default-servlet-handler/>
12 
13     <!--配置JSP 顯示ViewResolver-->
14     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
15         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
16         <property name="prefix" value="/WEB-INF/view/"/>
17         <property name="suffix" value=".jsp"/>
18     </bean>
19 
20     <!--掃描web相關的bean-->
21     <context:component-scan base-package="controller"/>
22 
23     <!--指定靜態資源映射-->
24     <!--<mvc:resources mapping="/**/*.js" location="/"/>-->
25 </beans>

  spring-service.xml:apache

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 5        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">
 6     <!--掃描service包下全部使用註解的類型-->
 7     <context:component-scan base-package="service"/>
 8 
 9     <!--配置事務管理器-->
10     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
11         <!--注入數據庫鏈接池-->
12         <property name="dataSource" ref="dataSource"/>
13     </bean>
14 
15     <!--配置基於註解的聲明式事務
16     默認使用註解來管理事務行爲-->
17     <tx:annotation-driven transaction-manager="transactionManager"/>
18 </beans>

  spring-dao.xml:json

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 5        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">
 6     <!--數據庫參數-->
 7     <!--<context:property-placeholder location="classpath:application.properties"/>-->
 8     <bean id="propertyConfigurer"
 9           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
10         <property name="location" value="classpath:application.properties" />
11     </bean>
12 
13     <!--數據庫鏈接池-->
14     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
15           destroy-method="close">
16         <!--配置鏈接池屬性-->
17         <property name="driverClassName" value="${driver}" />
18         <property name="url" value="${url}" />
19         <property name="username" value="${username}" />
20         <property name="password" value="${password}" />
21     </bean>
22 
23     <!--SqlSessionFactory對象-->
24     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
25         <!--往下才是mybatis和spring真正整合的配置-->
26         <!--注入數據庫鏈接池-->
27         <property name="dataSource" ref="dataSource"/>
28         <!--配置mybatis全局配置文件:mybatis-config.xml-->
29         <property name="configLocation" value="classpath:mybatis-config.xml"/>
30         <!--掃描sql配置文件:mapper須要的xml文件-->
31         <property name="mapperLocations" value="classpath*:dao/mapper/xml/*.xml"/>
32     </bean>
33 
34     <!--配置掃描Dao接口包,注入到spring容器-->
35     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
36         <!--注入SqlSessionFactory-->
37         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
38         <!-- 給出須要掃描的Dao接口-->
39         <property name="basePackage" value="dao"/>
40     </bean>
41 
42     <!--&lt;!&ndash; 配置Spring的事務管理器 &ndash;&gt;-->
43     <!--<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
44         <!--<property name="dataSource" ref="dataSource" />-->
45     <!--</bean>-->
46 
47     <!--&lt;!&ndash; 註解方式配置事物 Service支持Transiactional &ndash;&gt;-->
48      <!--<tx:annotation-driven transaction-manager="transactionManager" />-->
49 </beans>

  spring-dao.xml裏面涉及到了數據庫鏈接,這裏經過property引入一個數據庫鏈接串配置文件:spring-mvc

<bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:application.properties" />
    </bean>

  application.properties配置文件內容如:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://119.111.1111.111:3306/shenniu003_db
username=root
password=1111.

  須要注意的dao.xml中有對前面生成的mybatis實體和mapper掃描操做,具體看配置信息;這裏我還分離出了一個mybatis-config.xml,主要是mybatis全局配置信息,mybatis-config.xml:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!--配置全局屬性-->
 7     <settings>
 8         <!--使用jdbc的getGeneratekeys獲取自增主鍵值-->
 9         <setting name="useGeneratedKeys" value="true"/>
10         <!--使用列別名替換列名  默認值爲true-->
11         <setting name="useColumnLabel" value="true"/>
12         <!--開啓駝峯命名轉換Table:create_time到 實體的createTime-->
13         <setting name="mapUnderscoreToCamelCase" value="true"/>
14     </settings>
15 </configuration>

  配置spring一系列文件後,須要有一個入口吧這些文件在程序啓動的時候加載,所以須要在web.xml中以下配置:

 1 <!DOCTYPE web-app PUBLIC
 2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
 4 
 5 <!--重點:這裏webapp不替換將沒法在jsp頁面上使用jstl語法(網頁直接把標籤輸出來了)-->
 6 <!--<web-app>-->
 7 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 8          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 9          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
10     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
11 
12   <display-name>Archetype Created Web Application</display-name>
13 
14   <!--配置DispatcherServlet-->
15   <servlet>
16     <servlet-name>dispatcherServlet</servlet-name>
17     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
18     <!-- 配置SpringMVC 須要配置的文件   -->
19     <init-param>
20       <param-name>contextConfigLocation</param-name>
21       <param-value>classpath:spring/spring-*.xml</param-value>
22     </init-param>
23   </servlet>
24 
25   <servlet-mapping>
26     <servlet-name>dispatcherServlet</servlet-name>
27     <!--默認匹配全部請求-->
28     <url-pattern>/</url-pattern>
29   </servlet-mapping>
30 
31 
32   <welcome-file-list>
33     <welcome-file>/index.html</welcome-file>
34   </welcome-file-list>
35 
36 </web-app>

  這裏須要注意默認idea生成的web.xml中的web-app節點沒有schema引入,若是webapp不替換將沒法在jsp頁面上使用jstl語法,這須要特別注意;

配置訪問靜態資源的兩種配置方式

  因爲採用的是mvc方式,所以映射使用dispatcherServlet來作適配,可是路由/攔截了對靜態資源的訪問,所以須要單獨處理下,有兩種方式:

  1.能夠在spring-web.xml中配置默認servlet適配:

1 <!--默認servlet配置靜態資源-->
2 <mvc:default-servlet-handler/>

  2.直接經過mvc:resources引入資源:

1 <!--指定靜態資源映射-->
2 <mvc:resources mapping="/**/*.js" location="/"/>

引入事物註解

  要使用事物,須要在spring-service.xml配置事物註解方式(這裏也能夠經過切點方式):

1 <!--配置基於註解的聲明式事務-->
2 <tx:annotation-driven transaction-manager="transactionManager"/>

  有了上面配置後,就能夠在代碼的service層經過 @Transactional(isolation = Isolation.DEFAULT) 註解引入事物並可選事物隔離機制(本篇忽略)

打成war部署到tomcat 

  對於java項目部署來講tomcat仍是經常使用的容器,咱們要把ssm工程打包成war包,須要在mvn中build節點中以下配置(注:本次項目mybatis的mapper文件存放目錄不一樣,所以打包時須要包含下):

 1 <!--加載非資源目錄的配置文件-->
 2         <resources>
 3             <resource>
 4                 <directory>src/main/java</directory>
 5                 <includes>
 6                     <include>dao/mapper/xml/*.xml</include>
 7                     <include>**/*.xml</include>
 8                     <include>**/*.properties</include>
 9                 </includes>
10                 <excludes>
11                     <exclude>**/*-generator.xml</exclude>
12                 </excludes>
13                 <filtering>false</filtering>
14             </resource>
15         </resources>

  因爲我工程建立時候沒有main入口,所以在打包時候是不會成功的,咱們須要經過手動添加一個以下main入口class:

1 public class ApplicationClass {
2     public static void main(String[] args) {
3     }
4 }

  而後經過mvn的package命令便可打包成功,成功信息如:

  

  把war包拷貝到tomcat的webapps目錄,會自行解壓;本篇分享內容就這麼多,但願能對你有好的幫助,不放點個「」。

相關文章
相關標籤/搜索