




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
考SSM三大框架的整合〔Spring+SpringMVC+MyBatis〕 考1.1、SpringSpring是一個(gè)開源框架,Spring是于2003年興起的一個(gè)輕量級(jí)的Java開發(fā)框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。簡(jiǎn)單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)〔IoC〕和面向切面〔AOP〕的容器框架。1.2、SpringMVCSpringMVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在SpringWebFlow里面。SpringMVC別離了控制器、模型對(duì)象、分派器以及處理程序?qū)ο蟮慕巧?,這種別離讓它們更容易進(jìn)行定制。1.3、MyBatisMyBatis本是apache的一個(gè)開源項(xiàng)目iBatis,2010年這個(gè)項(xiàng)目由apachesoftwarefoundation遷移到了googlecode,并且改名為MyBatis。MyBatis是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQLMaps和DataAccessObjects〔DAO〕MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJOs〔PlainOldJavaObjects,普通的Java對(duì)象〕映射成數(shù)據(jù)庫(kù)中的記錄。2、開發(fā)環(huán)境搭建如果需要,參看之前的博文:://blog.csdn.net/zhshulin/article/details/3077987333、MavenWeb項(xiàng)目創(chuàng)建考如果需要,參看之前的博文:://blog.csdn.net/zhshulin/article/details/37921705的搭建以及項(xiàng)目的創(chuàng)建,參看上面的博文。這次整合我分了2個(gè)配置文件,分別是spring-mybatis.xml,包含spring和mybatis的配置文件,還有個(gè)是spring-mvc的配置文件,此外有2個(gè)資資源文件:jdbc.propertis和log4j.properties。完整目錄結(jié)構(gòu)如下:使用框架都是較新的版本:Spring4.0.2RELEASESpringMVC4.0.2RELEASEMyBatis3.2.6考的JAR包,這都是基本的JAR包,每個(gè)包的是干什么的都有注釋,就不再多說了。pom.xml<properties><!--spring版本號(hào)--><spring.version>4.0.2.RELEASE</spring.version><!--mybatis版本號(hào)--><mybatis.version>3.2.6</mybatis.version><!--log4j日志文件管理包版本--><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version>--><scope>test</scope></dependency><!--spring核心包--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency>考<<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId>考<<version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--mybatis核心包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!--mybatis/spring包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!--導(dǎo)入javaeejar包--><dependency><groupId>javax</groupId><<artifactId>javaee-api</artifactId><version>7.0</version></dependency><!--導(dǎo)入Mysql數(shù)據(jù)庫(kù)鏈接jar包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!--導(dǎo)入dbcp的jar包,用來在applicationContext.xml中配置數(shù)據(jù)庫(kù)--><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!--JSTL標(biāo)簽類--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--logstart--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency>考<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!--logend--><!--映入JSON--><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!--上傳組件包--><dependency>考<<groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency></dependencies>所有需要的JAR包都引入以后,首先進(jìn)行Spring與MyBatis的整合,然后再進(jìn)考perties〔文件編碼修改為utf-8〕driver=com.mysql.jdbc.Driverurl=jdbc:mysql://10.221.10.111:8080/db_zslusername=demaopassword=demaoinitialSize=0maxActive=20maxIdle=20minIdle=1maxWait=60000考這個(gè)文件就是用來完成spring和mybatis的整合的。這里面也沒多少行spring-mybatis.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="://springframework.org/schema/beans"xmlns:xsi="://w3.org/2001/XMLSchema-instance"xmlns:p="://springframework.org/schema/p"xmlns:context="://springframework.org/schema/context"xmlns:mvc="://xsi:schemaLocation="springframework.org/schema/mvc"://springframework.org/schema/beans://springframework.org/schema/beans/spring-beans-3.1.xsd://springframework.org/schema/context://springframework.org/schema/context/spring-context-3.1.xsd://springframework.org/schema/mvc://springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!--自動(dòng)掃描--><context:component-scanbase-package="com.hnust"/><!--引入配置文件--><beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">考<propertyname="location"value="classpath:jdbc.properties"/></bean><beanid="dataSource"mons.dbcp.BasicDataSource"class="org.apachedestroy-method="close"><propertyname="driverClassName"value="${driver}"/><propertyname="url"value="${url}"/><propertyname="username"value="${username}"/><propertyname="password"value="${password}"/>--初始化連接大小--><propertyname="initialSize"value="${initialSize}"></property>--連接池最大數(shù)量--><propertyname="maxActive"value="${maxActive}"></property>--連接池最大空閑--><propertyname="maxIdle"value="${maxIdle}"></property>--連接池最小空閑--><propertyname="minIdle"value="${minIdle}"></property><propertyname="maxWait"value="${maxWait}"></property></bean><!--spring和MyBatis完美整合,不需要mybatis的配置映射文件--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">考<<propertyname="dataSource"ref="dataSource"/><!--自動(dòng)掃描mapping.xml文件--><propertyname="mapperLocations"value="classpath:com/cn/hnust/mapping/*.xml"></property></bean><beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"><propertyname="basePackage"value="com.hnust.dao"/><propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"></property></bean><!--(事務(wù)管理)transactionmanager,useJtaTransactionManagerforglobaltx--><beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="dataSource"/></bean></beans>考perties為了方便調(diào)試,一般都會(huì)使用日志來輸出信息,Log4j是Apache的一個(gè)開放源代碼項(xiàng)目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件,甚至是套接口服務(wù)器、NT的事件記錄器、UNIXSyslog們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過程。Log4j的配置很簡(jiǎn)單,而且也是通用的,下面給出一個(gè)基本的配置,換到其他項(xiàng)目中也無需做多大的調(diào)整,如果想做調(diào)整或者想了解Log4j的各種配置,參看我轉(zhuǎn)載的一篇博文,很詳細(xì)::///zhshulin/article/details/37937365下面給出配置文件目錄:loglog4j.rootLogger=INFO,Console,Filelog4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=[%c]-%m%n#文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件log4j.appender.File=org.apache.log4j.RollingFileAppender考loglog4j.appender.File.File=logs/ssm.loglog4j.appender.File.MaxFileSize=10MBlog4j.appender.File.Threshold=ALLlog4j.appender.File.layout=org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-ddHH\:mm\:ss}][%c]%m%n經(jīng)過以上步驟〔到4.2.2,log4j不配也沒影響〕,我們已經(jīng)完成了Spring和mybatis的整合,這樣我們就可以編寫一段測(cè)試代碼來試試是否成功了。既然我們需要測(cè)試,那么我們就需要建立在數(shù)據(jù)庫(kù)中建立一個(gè)測(cè)試表,這個(gè)表建的很簡(jiǎn)單,SQL語(yǔ)句為:DROPTABLEIFEXISTS`user_t`;CREATETABLE`user_t`(`id`int(11)NOTNULLAUTO_INCREMENT,`user_name`varchar(40)NOTNULL,`password`varchar(255)NOTNULL,`age`int(4)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;/*Dataforthetable`user_t`*/考insertinto`user_t`(`id`,`user_name`,`password`,`age`)values(1,'測(cè)試','sfasgfaf',24);參參考博文:://blog.csdn.net/zhshulin/article/details/23912615這個(gè)可根據(jù)表自動(dòng)創(chuàng)建實(shí)體類、MyBatis映射文件以及DAO接口,當(dāng)然,我習(xí)慣將生成的接口名改為IUserDao,而不是直接用它生成的UserMapper。如果不想麻煩就可以不改。完成后將文件復(fù)制到工程中。如圖:目錄結(jié)構(gòu):考下面給出具體的內(nèi)容:下面給出具體的內(nèi)容:IUserService.javepackagecom.hnust.service;importcom.hnust.pojo.User;publicinterfaceIUserService{publicUsergetUserById(intuserId);}UserServiceImplUserServiceImpl.javapackagepackagecom.hnust.service.impl;importjavax.annotation.Resource;importorg.springframework.stereotype.Service;importcom.hnust.dao.IUserDao;考importimportcom.hnust.pojo.User;importcom.hnust.service.IUserService;@Service("userService")publicclassUserServiceImplimplementsIUserService{@ResourceprivateIUserDaouserDao;@OverridepublicUsergetUserById(intuserId){//TODOAuto-generatedmethodstubreturnthis.userDao.selectByPrimaryKey(userId);}}測(cè)試類在src/test/java中建立,下面測(cè)試類中注釋掉的部分是不使用Spring時(shí),一般情況下的一種測(cè)試方法;如果使用了Spring那么就可以使用注解的方式來引入配置文件和類,然后再將service接口對(duì)象注入,就可以進(jìn)行測(cè)如果測(cè)試成功,表示Spring和Mybatis已經(jīng)整合成功了。輸出信息使用packagepackageorg.zsl.testmybatis;importjavax.annotation.Resource;考importorg.apache.log4j.Logger;importorg.junit.Before;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;importcom.alibaba.fastjson.JSON;importcom.hnust.pojo.User;importcom.hnust.service.IUserService;@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit4ClassRunner類@ContextConfiguration(locations={"classpath:spring-mybatis.xml"})publicclassTestMyBatis{privatestaticLoggerlogger=Logger.getLogger(TestMyBatis.class);//privateApplicationContextac=null;@ResourceprivateIUserServiceuserService=null;//////@Beforepublicvoidbefore(){ac=newClassPathXmlApplicationContext("applicationContext.xml");考////userService=(IUserService)ac.getBean("userService");//}@Testpublicvoidtest1(){Useruser=userService.getUserById(1);//System.out.println(user.getUserName());//logger.info("值:"+user.getUserName());logger.info(JSON.toJSONString(user));}}測(cè)測(cè)試結(jié)果:至至此,完成Spring和mybatis這兩大框架的整合,下面在繼續(xù)進(jìn)行SpringMVC的整合。上面已經(jīng)完成了2大框架的整合,SpringMVC的配置文件單獨(dú)放,然后在web.xml中配置整合??寂渲美锩娴淖⑨屢埠茉敿?xì),在此就不說了,主要是自動(dòng)掃描控制器,視圖模式,注解的啟動(dòng)這三個(gè)。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="://springframework.org/schema/beans"xmlns:xsi="://w3.org/2001/XMLSchema-instance"xmlns:p="://springframework.org/schema/p"xmlns:context="://springframework.org/schema/context"xmlns:mvc="://xsi:schemaLocation="springframework.org/schema/mvc"://springframework.org/schema/beans://springframework.org/schema/beans/spring-beans-3.1.xsd://springframework.org/schema/context://springframework.org/schema/context/spring-context-3.1.xsd://springframework.org/schema/mvc://springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!--自動(dòng)掃描該包,使SpringMVC認(rèn)為包下用了@controller注解的類是控制器--><context:component-scanbase-package="com.hnust.controller"/><!--防止IE執(zhí)行AJAX時(shí),返回JSON出現(xiàn)下載文件--><beanid="mappingJacksonMessageConverter"class="org.springframework..converter.json.MappingJacksonMessageConverter"><propertyname="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value>考</list></property></bean><!--啟動(dòng)SpringMVC的注解功能,完成請(qǐng)求和注解POJO的映射--><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><propertyname="messageConverters"><list><refbean="mappingJacksonMessageConverter"/><!--JSON轉(zhuǎn)換器--></list></property></bean><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><propertyname="prefix"value="/WEB-INF/jsp/"/><propertyname="suffix"value=".jsp"/></bean><beanid="multipartResolver"class="org.springframework.web.multipartmonsMultipartResolver">mons<!--默認(rèn)編碼--><propertyname="defaultEncoding"value="utf-8"/><!--文件大小最大值-->考<<propertyname="maxUploadSize"value="10485760000"/><!--內(nèi)存中的最大值--><propertyname="maxInMemorySize"value="40960"/></bean></beans>考這里面對(duì)spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是為了完成SSM整合,之前2框架整合不需要在此處進(jìn)行任何配置。配置一樣有詳細(xì)注釋,不多解釋了。web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="://w3.org/2001/XMLSchema-instance"xmlns="://java.sun/xml/ns/javaee"xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>ArchetypeCreatedWebApplication</display-name><!--Spring和mybatis的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value></context-param><!--編碼過濾器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name>考<<param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--Spring監(jiān)聽器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--防止Spring內(nèi)存溢出監(jiān)聽器--><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!--SpringMVCservlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>考<async<async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!--此處可以可以配置成*.do,對(duì)應(yīng)struts的后綴習(xí)慣--><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list></web-app>那么恭喜你,如果失敗了,繼續(xù)調(diào)試吧,作為程序員就是不停的與BUG做斗爭(zhēng)!showUsershowUser.jsp此頁(yè)面僅輸出一下用戶名,完成一個(gè)完整的簡(jiǎn)單流程???lt;%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>測(cè)試</title></head><body>${user.userName}</body></html>UserController.java控制器packagepackagecom.hnust.controller;importjavax.annotation.Resource;importjavax.servlet..ServletRequest;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcom.hnust.pojo.User;importcom.hnust.service.IUserService;@Controller考@RequestMapping@RequestMapping("/user")publicclassUserController{@ResourceprivateIUserServiceuserService;@RequestMapping("/showUser")publicStringtoIndex(ServletRequestrequest,Modelmodel){intuserId=Integer.parseInt(request.getParameter("id"));Useruser=this.userService.getUserById(userId);model.addAttribute("user",user);return"showUser";}}輸入地址輸入地址:localhost:8080/項(xiàng)目名稱/user/showUser?id=1至此,SSM三大框架的整合就完成了,在此基礎(chǔ)上可再添加其他功能???//Spring3.0.1包org.springframework.web-3.0.1系列//公共包slf4j-api-1.5.6.jarslf4j-log4j12-1.5.6.jarlog4j-1.2.13.jarcommonscommons-logging-1.1.1.jarasm-3.1.jarcglib-2.2.jar///mybatis與Spring的整合所需的包mybatismybatis-3.0.5.jaraopallianceaopalliance-1.0.jarmybatismybatis-spring-1.0.1.jarmybatismybatis-generator-core-1.3.1.jar(mybatis代碼生成器包)////jdbcdrivenmysqlmysql-connector-java-3.1.6-bin.jar///JSR驗(yàn)證-Hibernatevalidate4.1hibernatehibernate-validator-4.1.0.Final.jarvalidationvalidation-api-1.0.0.GA.jar////SpringJson支持包jacksonjackson-all-1.8.1.jar考2.web.xml配置ServletServlet配置orgorg.springframework.web.servlet.DispatcherServletinitinit-param配置servlet初始化文件.以以及servlet-mapping配置.應(yīng)應(yīng)用路徑配置wwebAppRootKeyLogLog4j配置LogLog4jConfigLocationLogLog4jRefreshIntervalSpringSpring上下文配置contextConfigLocationcontextConfigLocationSpringSpring字符集過濾器配置orgorg.springframework.web.filter.CharacterEncodingFilterSpringSpring監(jiān)聽器配置orgorg.springframework.web.context.ContextLoaderListenerloglog4j監(jiān)聽器配置orgorg.springframework.web.util.Log4jConfigListener考3.springmvc-servlet.xml配置<<mvc:annotation-driven/>組組件scanner主要是自動(dòng)去注入指定包里的對(duì)象<<context:component-scanbasebase-package="com.los.mvc.controller"/>ViewResolverViewResolver&View映射關(guān)系InternalResourceViewResolverInternalResourceViewResolver基于resource對(duì)jsp/jstl的支持<<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><<propertyname="prefix"value="/WEB-INF/views/"/><<propertyname="suffix"value=".jsp"/><<!--InternalResourceViewResolverviewClass默認(rèn)值就是JstlView--><<propertyname="viewClass"valuevalue="org.springframework.web.servlet.view.JstlView"></property><</bean>自定義攔截器配置自定義攔截器配置<<mvc:interceptors><<mvc:interceptor><<mvc:mappingpath="/json*"/><<beanclass="erceptor.MyInterceptor"></bean><</mvc:interceptor><</mvc:interceptors>考國(guó)國(guó)際化配置anid="messageSource"classclass="org.springframework.context.support.ResourceBundleMessageSource"><<propertyname="basename"value="message"></property><</bean>4.Spring上下文--applicationContext.xml配置支支持注解nclassclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><</bean>anclassclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"><</bean><<importresource="service.xml"/><<importresource="dao.xml"/><<importresource="orm.xml"/>serviceservice.xmldao.xml配置@service和@Repository5.Mybatis3.0.5-Spring整合--orm.xmlDataSourceDataSource配置anid="dataSource"classclass="org.springframework.jdbc.datasource.DriverManagerDataSource">考<<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><<propertyname="url"value="jdbc:mysql://localhost:3306/mvc"/><<propertyname="username"value="root"/><<propertyname="password"value="root"/><</bean>注注冊(cè)事務(wù)管理器(Mybatis將事務(wù)轉(zhuǎn)交給Spring來管理)anid="transactionManager"classclass="org.springframework.jdbc.datasource.DataSourceTransactionManager"><<propertyname="dataSource"ref="dataSource"/><</bean>SqlSessionFactory配置(Mybatis核心是sqlSessionFactory來獲取orm處理對(duì)象,dataSource,mapperLocations配置mybaits自動(dòng)生成的xml文件.就是注入映射關(guān)系.)<<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><<propertyname="dataSource"ref="dataSource"/><<propertyname="mapperLocations"value="classpath:/com/los/mvc/mapper/*.xml"/><</bean>MapperScannerMapperScanner配置.自動(dòng)去搜索mapper里的對(duì)象,并注入.<<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"><<propertyname="basePackage"value="com.los.mvc.dao"/><</bean><<tx:annotation-driven/>考6.mybatis自動(dòng)生成器配置--generatorConfig.xmlsqlMapGeneratorsqlMapGeneratorsqlMpper.xml生成器javaClientGeneratorjavaClientGeneratorModelDao生成器javaModelGeneratorjavaModelGeneratorModel生成器comcom.los.util.MBG.java運(yùn)行會(huì)自動(dòng)生成mybatis代碼.然后再配置orm.xml類類注解@@Controller@@RequestMapping("/json")為訪問該層的路徑.方法注方法注解@@RequestMapping(method=RequestMethod.GET)只有g(shù)et方法才能訪問.@@ResponseBody自動(dòng)將返回的封裝成json,方法返回值必須是map<String,?>類型.@@RequestMapping(value="/doLogin")value=”doLogin”為訪問該方法的handlermappingreturnreturn"login/login";會(huì)通過ViewResolver找到對(duì)應(yīng)的viewreturnreturn"redirect:/user/toRegister.html";為spring-mvc的重定向.@@InitBinder()為綁定器,可以為request傳來的數(shù)據(jù)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換.數(shù)據(jù)自動(dòng)驗(yàn)數(shù)據(jù)自動(dòng)驗(yàn)證考方方法中參數(shù)需要有后面的兩個(gè)(@ValidUseruser,BindingResultresult).@Valid的支持標(biāo)準(zhǔn)是JSR,HibernateValidate4是對(duì)該標(biāo)準(zhǔn)比較好的實(shí)現(xiàn).需要在Model類中配置驗(yàn)證的注解.判斷驗(yàn)證是否正確通過result.hasErrors()或者result.hasFieldErrors()來判斷,通過result.getAllErrors()或Error.getDeafaultMessage(),這個(gè)是獲取錯(cuò)誤信息.具體的錯(cuò)誤驗(yàn)證機(jī)制還地在Model類中配置.屬屬性注解@Autowired會(huì)為該屬性自動(dòng)注入bean,默認(rèn)方式是byType.也可以用@Resource這個(gè)注解默認(rèn)類類注解@@Service為@Component的子注解,分工更明細(xì).@Transactional可以為該業(yè)務(wù)類聲明一個(gè)全類的事務(wù).也可以將事務(wù)寫在方法上.根據(jù)不同的需要.方方法注解@@Transactional(readOnly=true)@@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)類的事務(wù)聲明,可以設(shè)置隔離級(jí)別和傳播屬性,以及要回滾的異常名或者異常類,不需要回滾的異常名或者異常類.異常通常拋出給controller層來處理屬性注解屬性注解@@Autowired@Resource考9.Repository層配置.(持久層DaoImpl)類類注解@@Repository為@Component的子注解,意為持久層,分工更明細(xì).一般不在這層處理事務(wù).類類注解@@Entry驗(yàn)驗(yàn)證注解,常用的有:@@NotEmpty@@NotNull@@Size(min=2,max=10,message=”xx必須在{min}和{max}之間”)@@Email@@DecimalMax@@AssertFalse@AssertTrue@@NullValid@@URL(protocol=,host=,port=,regexp=,flags=)一一般情況下屬性或者方法可以放多個(gè)約束注解,hibernatevalidate會(huì)以隨機(jī)的順序去驗(yàn)證這些約束.所以多個(gè)注解約束會(huì)有可能同一個(gè)屬性返回多個(gè)message.所以有時(shí)候需要只返回一條message,則需要使用驗(yàn)證組Groups來達(dá)成.組別序列可以把一系列的組別按照一定的順序排列在一起,然后逐個(gè)驗(yàn)證,只要有一個(gè)組別驗(yàn)證失敗,就不繼續(xù)驗(yàn)證剩余的組別。@@GroupSequence({User.class,GroupB.class,GroupC.class})驗(yàn)證組的順序,約束里不指定group考約束組放在類前,User.class為默認(rèn)的約束組,GroupB,GroupC為空的接口.寫在User外同個(gè)java文件下.@@NotEmpty(message="密碼不能為空")@@Size(min=4,max=20,message="密碼長(zhǎng)度必須在{min}-{max}范圍內(nèi)",groups=GroupBGroupB.class)如如果@NotEmpty驗(yàn)證失敗了,就不會(huì)繼續(xù)驗(yàn)證@Size考最近做了個(gè)maven管理的springmvc+spring+mybatis,還用到了阿里巴巴的fastjson和druid連接池,配置文件如下pom.xml文件[html]viewplaincopy1.<?xmlversion="1.0"encoding="UTF-8"?>/POM/4.0.0"xmlns:xsi="://aLocationmavenapacheorgPOMmavenapache4.<modelVersion>4.0.0</modelVersion>5.<groupId>com.dahafo.demo</groupId>6.<name>um</name>7.<packaging>war</packaging>8.<version>1.0.0-BUILD-SNAPSHOT</version>9.<properties>10.<java-version>1.7</java-version>11.<org.springframework-version>3.2.3.RELEASE</org.springframework-vers12.<org.aspectj-version>1.6.10</org.aspectj-version>13.<org.slf4j-version>1.6.6</org.slf4j-version>14.</properties>15.<dependencies>16.<!--Spring-->17.<dependency>18.<groupId>org.springframework</groupId>19.<artifactId>spring-context</artifactId>20.<version>${org.springframework-version}</version>21.<exclusions>22.<!--ExcludeCommonsLogginginfavorofSLF4j-->23.<exclusion>24.<groupId>commons-logging</groupId>25.<artifactId>commons-logging</artifactId>26.</exclusion>27.</exclusions>28.</dependency>29.<dependency>30.<groupId>org.springframework</groupId>31.<artifactId>spring-webmvc</artifactId>32.<version>${org.springframework-version}</version>33.</dependency>34.<dependency>35.<groupId>org.springframework</groupId>36.<artifactId>spring-jdbc</artifactId>37.<version>${org.springframework-version}</version>38.</dependency>40.<!--AspectJ-->41.<dependency>42.<groupId>org.aspectj</groupId>43.<artifactId>aspectjrt</artifactId>44.<version>${org.aspectj-version}</version>45.</dependency>47.<!--Logging-->48.<dependency>49.<groupId>org.slf4j</groupId>50.<artifactId>slf4j-api</artifactId>51.<version>${org.slf4j-version}</version>52.</dependency>53.<dependency>54.<groupId>org.slf4j</groupId>55.<artifactId>jcl-over-slf4j</artifactId>56.<version>${org.slf4j-version}</version>57.<scope>runtime</scope>58.</dependency>59.<dependency>60.<groupId>org.slf4j</groupId>61.<artifactId>slf4j-log4j12</artifactId>62.<version>${org.slf4j-version}</version>63.<scope>runtime</scope>64.</dependency>65.<dependency>66.<groupId>log4j</groupId>67.<artifactId>log4j</artifactId>68.<version>1.2.15</version>69.<exclusions>70.<exclusion>71
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多層砌體結(jié)構(gòu)施工方案
- 室外污水施工方案
- 水泥砼道路施工方案
- 援助學(xué)習(xí)資料
- 2025年歷史社區(qū)面試試題及答案
- 2025年張店二模歷史試題及答案
- 6年級(jí)下冊(cè)文言文學(xué)弈
- 5一6年級(jí)讀書卡
- 低溫法蘭標(biāo)識(shí)
- cdga數(shù)據(jù)治理工程師教材
- 俄烏沖突專題解讀課件
- 2024年廣西職業(yè)院校技能大賽高職組《視覺藝術(shù)設(shè)計(jì)》賽項(xiàng)規(guī)程
- JGJT46-2024《施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)》條文解讀
- 稅務(wù)局個(gè)人所得稅業(yè)務(wù)培訓(xùn)
- 餐廳服務(wù)員上菜培訓(xùn)
- 鉆機(jī)的基礎(chǔ)知識(shí)介紹
- ICU重癥患者康復(fù)護(hù)理
- 心理健康教育課件.他人眼中的我
- 簡(jiǎn)單詞考研英語(yǔ)5500單詞表
- 金茂入職前的在線測(cè)評(píng)題
- 廣東省佛山市2024年中考英語(yǔ)模擬試卷(含答案)
評(píng)論
0/150
提交評(píng)論