springmvc mybatis 整合

fhadmin24發表於2015-07-28

1. 所需要Jar包.

//Spring3.0.1包

org.springframework.web-3.0.1 系列

//公共包

slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar log4j-1.2.13.jar

commons-logging-1.1.1.jar asm-3.1.jar cglib-2.2.jar

//mybatis與Spring的整合所需的包

mybatis-3.0.5.jar

aopalliance-1.0.jar

mybatis-spring-1.0.1.jar

mybatis-generator-core-1.3.1.jar(mybatis程式碼生成器包)

//jdbc driven

mysql-connector-java-3.1.6-bin.jar

//JSR驗證-Hibernate validate 4.1

hibernate-validator-4.1.0.Final.jar

validation-api-1.0.0.GA.jar

//Spring Json 支援包

jackson-all-1.8.1.jar



2. web.xml配置

Servlet配置

org.springframework.web.servlet.DispatcherServlet

init-param配置servlet初始化檔案.

以及servlet-mapping配置.

應用路徑配置

webAppRootKey

Log4j配置

Log4jConfigLocation

Log4jRefreshInterval

Spring上下文配置

contextConfigLocation

Spring字符集過濾器配置

org.springframework.web.filter.CharacterEncodingFilter

Spring監聽器配置

org.springframework.web.context.ContextLoaderListener

log4j監聽器配置

org.springframework.web.util.Log4jConfigListener



3. spring mvc - servlet.xml配置

啟動mvc註解驅動

<mvc:annotation-driven/>

元件scanner主要是自動去注入指定包裡的物件

<context:component-scan

base-package="com.los.mvc.controller"/>

ViewResolver & View 對映關係

InternalResourceViewResolver 基於resource對jsp/jstl的支援

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/views/"/>

<property name="suffix" value=".jsp"/>

<!-- InternalResourceViewResolver viewClass預設值就是JstlView -->

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>

</bean>

自定義攔截器配置

<mvc:interceptors>

<mvc:interceptor>

<mvc:mapping path="/json*"/>

<bean class="com.los.mvc.interceptor.MyInterceptor"></bean>

</mvc:interceptor>

</mvc:interceptors>

國際化配置

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basename" value="message"></property>

</bean>



4. Spring上下文 -- applicationContext.xml 配置

支援註解

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>

<import resource="service.xml"/>

<import resource="dao.xml"/>

<import resource="orm.xml"/>



service.xml dao.xml 配置@service 和 @Repository



5. Mybatis3.0.5-Spring 整合 -- orm.xml

DataSource配置

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/mvc"/>

<property name="username" value="root" />

<property name="password" value="root" />

</bean>



註冊事務管理器(Mybatis將事務轉交給Spring來管理)

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource" />

</bean>

SqlSessionFactory配置(Mybatis核心是sqlSessionFactory來獲取orm處理物件, dataSource, mapperLocations配置mybaits自動生成的xml檔案.就是注入對映關係.)

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

<property name="mapperLocations" value="classpath:/com/los/mvc/mapper/*.xml" />

</bean>

MapperScanner配置.自動去搜尋mapper裡的物件,並注入.

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.los.mvc.dao" />

</bean>

啟動Spring註解事務

<tx:annotation-driven/>



6. mybatis自動生成器配置 -- generatorConfig.xml

sqlMapGenerator sqlMpper.xml生成器

javaClientGenerator ModelDao生成器

javaModelGenerator Model生成器

com.los.util.MBG.java 執行會自動生成mybatis程式碼.然後再配置orm.xml



7. Controller層配置

類註解

@Controller

@RequestMapping("/json")為訪問該層的路徑.



方法註解

@RequestMapping(method = RequestMethod.GET) 只有get方法才能訪問.

@ResponseBody 自動將返回的封裝成json,方法返回值必須是map<String,?>型別.

@RequestMapping(value="/doLogin") value=”doLogin”為訪問該方法的handler mapping

return "login/login";會透過ViewResolver找到對應的view

return "redirect:/user/toRegister.html";為spring-mvc的重定向.

@InitBinder()為繫結器,可以為request傳來的資料進行資料型別轉換.



資料自動驗證

方法中引數需要有後面的兩個(@Valid User user,BindingResult result).@Valid的支援標準是JSR,Hibernate Validate 4是對該標準比較好的實現.需要在Model類中配置驗證的註解.判斷驗證是否正確透過result.hasErrors()或者result.hasFieldErrors()來判斷,透過result.getAllErrors()或者result.getFieldErrors()來獲取Errors然後遍歷Errors獲取相關想要的資訊,例如Error.getDeafaultMessage(),這個是獲取錯誤資訊.具體的錯誤驗證機制還地在Model類中配置.



屬性註解

@Autowired 會為該屬性自動注入bean,預設方式是byType.也可以用@Resource這個註解預設是byName.



8. Service層配置.(業務層)

類註解

@Service 為@Component的子註解,分工更明細.

@Transactional 可以為該業務類宣告一個全類的事務.也可以將事務寫在方法上.根據不同的需要.



方法註解

@Transactional(readOnly = true)

@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 類的事務宣告,可以設定隔離級別和傳播屬性,以及要回滾的異常名或者異常類,不需要回滾的異常名或者異常類.異常通常丟擲給controller層來處理



屬性註解

@Autowired @Resource

9. Repository層配置.(持久層DaoImpl)

類註解

@Repository 為@Component的子註解,意為持久層,分工更明細.一般不在這層處理事務.



10.Entry層配置(Model層)

類註解

@Entry

驗證註解,常用的有:

@NotEmpty

@NotNull

@Size(min=2,max=10,message=”xx必須在{min}和{max}之間”)

@Email

@DecimalMax

@AssertFalse @AssertTrue

@Null

@Valid

@URL(protocol=,host=, port=,regexp=, flags=)

一般情況下屬性或者方法可以放多個約束註解,hibernate validate會以隨機的順序去驗證這些約束.所以多個註解約束會有可能同一個屬性返回多個message.所以有時候需要只返回一條message,則需要使用驗證組Groups來達成.組別序列可以把一系列的組別按照一定的順序排列在一起,然後逐個驗證,只要有一個組別驗證失敗,就不繼續驗證剩餘的組別。

@GroupSequence({User.class,GroupB.class,GroupC.class})驗證組的順序,約束裡不指定group的為預設的User.class組.

約束組放在類前,User.class為預設的約束組,GroupB,GroupC為空的介面.寫在User外同個java檔案下.

@NotEmpty(message="密碼不能為空")

@Size(min=4,max=20,message="密碼長度必須在{min}-{max}範圍內",groups = GroupB.class)

如果@NotEmpty驗證失敗了,就不會繼續驗證@Size

java企業級通用許可權安全框架原始碼 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5 <wbr>


【java框架原始碼下載】

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30372520/viewspace-1754110/,如需轉載,請註明出處,否則將追究法律責任。

相關文章