您现在的位置是:首页 > 文章详情

spring+springmvc+mybatis构建系统

日期:2018-05-14点击:312

今天和大家分享的是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_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中如下配置:

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

git地址: https://github.com/shenniubuxing3    nuget发布包: https://www.nuget.org/profiles/shenniubuxing3
img_b0f7f3094651b5685efcc535a055b326.gif
原文链接:https://yq.aliyun.com/articles/618887
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章