zoukankan      html  css  js  c++  java
  • spring+springmvc+mybatis构建系统

      今天和大家分享的是spring+springmvc+mybatis搭建框架的例子,说到这里不得不说现在市面上一流大公司还有很多用这种架子,创业型公司大部分都用springboot集成的mvc+mybatis来构建应用,形成了两种“趋势”没有统一;因此在后面会有一章springboot+mybatis构建系统的文章,希望多多支持。

    • mybatis-generator逆向工程生成实体和配置文件
    • spring+springmvc+mybatis一系列配置
    • 访问静态资源的两种配置方式
    • 引入事物注解
    • 打成war包部署到tomcat

    mybatis-generator逆向工程生成实体和配置文件

      java项目中mybatis很常用,要说靠手动来配置实体,映射文件那可繁琐了,为此有了快速生成实体和mapper文件的generator工具;首先我们新建项目,初始化项目结构如:

      

      然后创建名称mybatis-generator.xml的配置文件,里面内容如下:

     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_studystudy_javaspringcloud_demomybatis_demosrcmain
    esourcesapplication.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="srcmainjava">
    27             <property name="enableSubPackages" value="true"/>
    28             <property name="trimStrings" value="true"/>
    29         </javaModelGenerator>
    30         <!--生成map的位置-->
    31         <sqlMapGenerator targetPackage="dao.mapper.xml" targetProject="srcmainjava">
    32             <property name="enableSubPackages" value="true"/>
    33         </sqlMapGenerator>
    34         <!--生成Dao类存放位置-->
    35         <javaClientGenerator type="XMLMAPPER" targetPackage="dao.mapper"  targetProject="srcmainjava">
    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中如下配置:

     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+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:

     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:

     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引入一个数据库连接串配置文件:

    <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目录,会自行解压;本篇分享内容就这么多,希望能对你有好的帮助,不放点个“”。

  • 相关阅读:
    [学习笔记]Java代码中各种类型变量的内存分配机制
    记录一次linux线上服务器被黑事件
    浅谈Facebook的服务器架构(组图)
    make: *** [sapi/cli/php] Error 1 解决办法
    linux CentOS 系统下如何将php和mysql命令加入到环境变量中
    Linux系统安装Apache 2.4.6
    日请求亿级的QQ会员AMS平台PHP7升级实践
    聊一聊淘宝首页和它背后的一套
    PHP与MySQL通讯那点事
    PHP多进程(4) :内部多进程
  • 原文地址:https://www.cnblogs.com/wangrudong003/p/9042081.html
Copyright © 2011-2022 走看看