首页 > 学院 > 开发设计 > 正文

常用框架(一):spring+springMvc+mybatis

2019-11-10 21:18:57
字体:
来源:转载
供稿:网友

项目说明:

最近做的几个项目都是采用sPRing+springMvc+mybatis三大框架组合模式,现整理一份,仅供学习和参考,后期更新其他框架组合模式。

采用注解方式,mybaits自动代码生成,数据库使用MySQL

一,spring 整合mybatis,需要的配置文件有两个,jdbc.properties 和 spring-datasource.xml

spring-datasource.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: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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">	<!-- 引入jdbc配置文件 -->	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">		<property name="systemPropertiesMode" value="2"/>		<property name="locations">			<list>				<value>classpath:jdbc.properties</value>			</list>		</property>	</bean>	<!-- 1. 数据源 : DriverManagerDataSource --> 	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>		<property name="url" value="${db.url}"/>		<property name="username" value="${db.username}"/>		<property name="passWord" value="${db.password}"/>		<!-- 从池中获取连接前进行验证 -->		<property name="testOnBorrow" value="false"/>		<!-- 向池中还回连接前进行验证 -->		<property name="testOnReturn" value="false"/>		<!-- 连接空闲时验证 -->		<property name="testWhileIdle" value="true"/>		<!-- 运行判断连接超时任务(evictor)的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->		<property name="timeBetweenEvictionRunsMillis" value="300000"/>		<!-- 连接的超时时间,默认为半小时。 -->		<property name="minEvictableIdleTimeMillis" value="1800000"/>		<!-- 每次evictor启动检查的空闲连接数,-2标识1/2的总空闲连接 -->		<property name="numTestsPerEvictionRun" value="-1"></property>		<!-- 线程池初始数量 -->		<property name="initialSize" value="10"></property>		<!-- 最大线程数量 -->		<property name="maxActive" value="50"></property>		<!-- 最大空闲线程数量 -->		<property name="maxIdle" value="20"></property>		<!-- 最小空闲线程数量 -->		<property name="minIdle" value="10"></property>		<!-- 从线程池获取一个mysql连接的最大等待时间,单位毫秒 -->		<property name="maxWait" value="1000"></property>	</bean>	 <!--          2. mybatis的Sqlsession的工厂: SqlSessionFactoryBean         dataSource:引用数据源          MyBatis定义数据源,同意加载配置  -->     	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">		<property name="dataSource" ref="dataSource"/>		<!-- 所有配置的mapper文件 -->		<property name="mapperLocations" value="classpath:com/qi/config/*.xml" />	</bean>		<!--         3. mybatis自动扫描加载Sql映射文件/接口 :         MapperScannerConfigurer sqlSessionFactory          basePackage:指定sql映射文件/接口所在的包(自动扫描)  -->    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">		<property name="basePackage" value="com.qi.mapper" ></property>		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>	</bean>      	<!--         4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源     -->    <bean id="transactionManager"          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">          <property name="dataSource" ref="dataSource"></property>      </bean>    <!-- 5. 使用声明式事务    		基于注释的事务,当注释中发现@Transactional时,使用id为“transactionManager”的事务管理器           transaction-manager:引用上面定义的事务管理器       -->      <tx:annotation-driven transaction-manager="transactionManager" /> </beans>jdbc.properties

db.url=jdbc:mysql://120.26.38.142:3306/datebase?useUnicode=true&characterEncoding=UTF8db.username=rootdb.password=root说明:

本例采用注解式事务,在需要事务控制的service方法上或者整个class上添加注解@Transactional

二,spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"	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-4.0.xsd	http://www.springframework.org/schema/mvc	http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">		<!-- 注解扫描包 -->	<context:component-scan base-package="com.*.*" />	<!-- 开启注解 -->	<mvc:annotation-driven>		<!-- 设置输出编码格式 -->		<mvc:message-converters>			<bean class="org.springframework.http.converter.StringHttpMessageConverter">				<constructor-arg>					<bean class="java.nio.charset.Charset" factory-method="forName">						<constructor-arg value="UTF-8" />					</bean>				</constructor-arg>			</bean>		</mvc:message-converters>	</mvc:annotation-driven>	<!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd -->	<!-- <mvc:resources mapping="/images/**" location="/images/" /> -->	<!-- <mvc:resources mapping="/js/**" location="/js/" /> -->	<!-- <mvc:resources mapping="/CSS/**" location="/css/" /> -->	<!-- <mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/" /> -->	<!-- 开启默认处理 -->	<!-- 这样静态资源就可以访问了 -->	<mvc:default-servlet-handler />	<!-- 对象与json数据的转换 -->	<bean		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">		<property name="messageConverters">			<list>				<bean					class="org.springframework.http.converter.StringHttpMessageConverter">					<property name="supportedMediaTypes">						<list>							<value>application/json;charset=UTF-8</value>						</list>					</property>				</bean>				<bean					class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">					<property name="objectMapper">						<bean class="com.fasterxml.jackson.databind.ObjectMapper">							<property name="dateFormat">								<bean class="java.text.SimpleDateFormat">									<constructor-arg type="java.lang.String" value="yyyy-MM-dd" />								</bean>							</property>						</bean>					</property>					<property name="supportedMediaTypes">						<list>							<value>application/json;charset=UTF-8</value>						</list>					</property>				</bean>			</list>		</property>	</bean>	<!-- 定义ViewResolver组件, 实现根据视图标识获取JSP响应 -->	<bean id="viewResolver"		class="org.springframework.web.servlet.view.InternalResourceViewResolver">		<!-- View中用到的相关技术 -->		<property name="viewClass"			value="org.springframework.web.servlet.view.JstlView"></property>		<!-- 后缀 -->		<property name="suffix" value=".jsp"></property>		<!-- 前缀 -->		<property name="prefix" value="/jsp/"></property>	</bean></beans>

三,web.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 设置Spring容器加载所有的配置文件的路径 --><context-param>	<param-name>contextConfigLocation</param-name>	<param-value>classpath*:spring-*.xml</param-value></context-param><session-config>	<session-timeout>15</session-timeout></session-config><!-- 加载Spring容器配置 --><listener>	<listener-class>		org.springframework.web.context.ContextLoaderListener	</listener-class></listener><!-- 防止Spring内存溢出监听器 --><listener>	<listener-class>		org.springframework.web.context.ContextCleanupListener	</listener-class></listener><!-- 监听session创建和失效 --><listener>      <listener-class>    	com.qi.listener.SessionListener    </listener-class>  </listener> <!-- 字符编码过滤器  --> <filter>     <filter-name>encodingFilter</filter-name>     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>     <init-param>       <param-name>encoding</param-name>       <param-value>UTF-8</param-value>     </init-param>     <init-param>              <param-name>forceEncoding</param-name>              <param-value>true</param-value>       </init-param>  </filter> <filter-mapping>     <filter-name>encodingFilter</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping><!-- 配置SpringMVC核心控制器 --><servlet>	<servlet-name>mvcDispatcher</servlet-name>	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>	<!-- 启动加载一次 -->	<load-on-startup>1</load-on-startup></servlet><servlet-mapping>	<servlet-name>mvcDispatcher</servlet-name>	<url-pattern>/</url-pattern></servlet-mapping><welcome-file-list>	<welcome-file>/html/login.html</welcome-file></welcome-file-list></web-app>

四,mybaits 自动代码生成,包含配置文件mbgConfiguration.xml 和 启动java类,需要引用的jar包 mybatis-generator-core-1.3.2.jar

 mbgConfiguration.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>	<!-- 配置mysql 驱动jar包路径.用了绝对路径 -->	<classPathEntry		location="E:/DEV/MS/WebContent/WEB-INF/lib/mysql-connector-java-5.1.31.jar" />	<context id="mysql_tables" targetRuntime="MyBatis3">		<!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->		<commentGenerator>			<property name="suppressAllComments" value="true" />			<property name="suppressDate" value="true" />		</commentGenerator>		<!-- 注释控制完毕 -->		<!-- 数据库连接 -->		<jdbcConnection		driverClass="com.mysql.jdbc.Driver"		connectionURL="jdbc:mysql://127.0.0.1:3306/database?characterEncoding=utf8"		userId="root"		password="root">		</jdbcConnection>		<javaTypeResolver>			<property name="forceBigDecimals" value="false" />		</javaTypeResolver>		<!-- 数据表对应的model 层 -->		<javaModelGenerator targetPackage="com.qi.model"			targetProject="src">			<property name="enableSubPackages" value="true" />			<property name="trimStrings" value="true" />		</javaModelGenerator>		<!-- sql mapper 隐射配置文件 -->		<sqlMapGenerator targetPackage="com.qi.config"			targetProject="src">			<property name="enableSubPackages" value="true" />		</sqlMapGenerator>		<!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 -->		<javaClientGenerator type="XMLMAPPER"			targetPackage="com.qi.mapper" targetProject="src">			<property name="enableSubPackages" value="true" />		</javaClientGenerator>		<!-- 要对那些数据表进行生成操作,必须要有一个. -->		<table schema="mybatis" tableName="APPLY_INFO" domainObjectName="ApplyInfo"			enableCountByExample="false" enableUpdateByExample="false"			enableDeleteByExample="false" enableSelectByExample="false"			selectByExampleQueryId="false">		</table>		<table schema="mybatis" tableName="TASK" domainObjectName="Task"			enableCountByExample="false" enableUpdateByExample="false"			enableDeleteByExample="false" enableSelectByExample="false"			selectByExampleQueryId="false">		</table>	</context></generatorConfiguration>

 java代码

package com.qi.test;import java.io.File;import java.io.IOException;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.exception.InvalidConfigurationException;import org.mybatis.generator.exception.XMLParserException;import org.mybatis.generator.internal.DefaultShellCallback;public class GenMain {	public static void main(String[] args) {		List<String> warnings = new ArrayList<String>();		boolean overwrite = true;		String genCfg = "/mbgConfiguration.xml";		File configFile = new File(GenMain.class.getResource(genCfg).getFile());		ConfigurationParser cp = new ConfigurationParser(warnings);		Configuration config = null;		try {			config = cp.parseConfiguration(configFile);		} catch (IOException e) {			e.printStackTrace();		} catch (XMLParserException e) {			e.printStackTrace();		}		DefaultShellCallback callback = new DefaultShellCallback(overwrite);		MyBatisGenerator myBatisGenerator = null;		try {			myBatisGenerator = new MyBatisGenerator(config, callback, warnings);		} catch (InvalidConfigurationException e) {			e.printStackTrace();		}		try {			myBatisGenerator.generate(null);		} catch (SQLException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		} catch (InterruptedException e) {			e.printStackTrace();		}	}}
上一篇:poj1458

下一篇:冒泡排序BubbleSort

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表