javascript
基于注解配置简单的SpringMVC+Mybatis
SpringMVC+Mybatis框架配置過好幾次了,現(xiàn)在貌似終于對這些東西有些了解,自己草草的總結(jié)一下,也是再學(xué)習(xí)的一個過程。
首先,準備jar包,這個就不在贅述了。
然后就來肉戲了,以下只是我的理解,不足之處請指出,輕噴。
web.xml是一個web程序的入口,當web程序啟動時,首先找web.xml。先把web.xml所有配置先貼出來。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>SpringMVC</display-name><!-- 項目默認頁面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 配置文件位置 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring監(jiān)聽器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!-- 字符集過濾器 --> <filter><filter-name>characterEncodingFilter</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></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- servlet控制跳轉(zhuǎn) --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC/context-dispatcher.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>這兩項,不用說了吧。
<span style="white-space:pre"> </span><display-name>SpringMVC</display-name><!-- 項目默認頁面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>web.xml讀到這個位置,就去找這個位置下的配置文件了,這個文件是spring容器的配置,監(jiān)聽器不用多說。
<!-- 配置文件位置 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring監(jiān)聽器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>配置spring的文件 <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.test" /><beanclass="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /><!--創(chuàng)建jdbc數(shù)據(jù)源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /><property name="username" value="scott" /><property name="password" value="tiger" /></bean><!-- 創(chuàng)建SqlSessionFactory,同時指定數(shù)據(jù)源 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /></bean><bean id="sqlTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory" /></bean> </beans>
很簡單,配置一個掃描包,就是掃描這個包下面的所有java類,如果需要spring來動態(tài)生成這個類,就給class加一個標簽,這個后面會貼出來。再配置一個自動注解。數(shù)據(jù)源不用多說,配置持久化工廠,就是告訴spring要用哪種持久化方式,這里配置的是mybatis。最底下配置一個mybatis的sqlTemplate,用來進行持久化操作。這就是spring中所有的東西。因為是基于注解的,所以不用一個一個地配置bean,是不是很簡單?
我們現(xiàn)在看看mybatis的配置:
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><typeAliases><typeAlias type="com.test.vo.EmpVo" alias="EmpVo" /></typeAliases><mappers><mapper resource="mybatis/mapper/empMapper.xml" /></mappers> </configuration>這個是mybatis的總配置,配置對應(yīng)VO類的別名,還有具體mapper文件存放的位置。我們看看empMapper.xml
呵呵,SQL語句,這里注意id是唯一的,resultType是具體類,就是說查出來的字段應(yīng)該和你的VO一一對應(yīng),當然也可以是系統(tǒng)類,int,string,都可以。但是這樣不能滿足復(fù)雜的查詢,所以更多情況下我們使用resultMap,resultMap具體配置可以自行g(shù)oogle或度娘 。
整個spring和持久化層的東西就搞完了,我們現(xiàn)在繼續(xù)回到web.xml。
<!-- 字符集過濾器 --> <filter><filter-name>characterEncodingFilter</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></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>這個是過濾器,和springMVC沒什么關(guān)系,主要功能是將所有請求的編碼格式改成UTF-8格式。
繼續(xù)往下看:
<!-- servlet控制跳轉(zhuǎn) --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC/context-dispatcher.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>這是配置MVC的部分,其實無論是SpringMVC還是structs,其實都是把servlet封裝了,所以這里其實就是配置servlet。將帶有后綴名為.do的http請求攔截(dispatch),然后根據(jù)配置去解析相應(yīng)的請求。我們看看這個文件: <beans default-lazy-init="true" 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-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 通過注解,把URL映射到Controller上,該標簽?zāi)J注冊DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --> <mvc:annotation-driven /> <!-- 使用注解的包,包括子集 --> <context:component-scan base-package="com.samsung.controller" /> <!-- 視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp"></property> </bean> </beans> 同樣也是簡單到爆啊有木有,加注解,加掃包,配置視圖解析,視圖解析的作用就是加前后綴,直接讀文件。整個springMVC的框架就搭好了,不到100行的Xml。當然,事務(wù)處理神馬的沒有加,最基本的東西已經(jīng)配置好了,就可以用了。
總結(jié)一下:
web.xml是web程序入口,關(guān)于SpringMVC需要配置的有:配置Spring的文件位置,Spring監(jiān)聽器,MVC也就是servlet的配置;
spring文件中需要配置的有:掃包,自動注解,數(shù)據(jù)源,數(shù)據(jù)源工廠(在這里配置你的持久化方式),還有進行持久化操作的sqlTemplate;
mybatis配置的有:別名,mapper文件存放的位置,mapper文件配置具體的sql語句;
mvc的配置有:掃包,自動注解,視圖解析。
下面附上代碼結(jié)構(gòu)和代碼:
Controller
@Controller public class TestController {@Autowiredprivate ITestSVC testSVC;@RequestMapping(value = "/list.do")public String select(HttpServletRequest request, Model model) {List<EmpVo> emps = testSVC.findAll();model.addAttribute("emps", emps);System.out.println(emps.size());return "list";}@RequestMapping(value = "/toAdd.do")public String toAdd(HttpServletRequest request, Model model) {return "add";}@RequestMapping(value = "/add.do")public String add(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));empVo.seteName(request.getParameter("eName"));empVo.setJob(request.getParameter("job"));testSVC.add(empVo);return "redirect:/list.do";}@RequestMapping(value = "/del.do")public String delEmp(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));testSVC.delete(empVo);return "redirect:/list.do";}}ITestDao public interface ITestDao {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);public EmpVo findOne(String id); }
TestDaoImpl
@Repository public class TestDao implements ITestDao {@Autowiredprivate SqlSessionTemplate sqlTemplate;@Overridepublic void add(EmpVo emp) {sqlTemplate.insert("addEmp", emp);}@Overridepublic void delete(EmpVo emp) {sqlTemplate.delete("delEmpById", emp);}@Overridepublic List<EmpVo> findAll() {List<EmpVo> list = new ArrayList<EmpVo>();list = sqlTemplate.selectList("getEmpList");return list;}@Overridepublic void update(EmpVo emp) {}@Overridepublic EmpVo findOne(String id) {return null;}ITestSVC public interface ITestSVC {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);}
EmpVo public class EmpVo {private String empNo;private String eName;private String job;public EmpVo() {}public EmpVo(String empNo, String eName, String job) {super();this.empNo = empNo;this.eName = eName;this.job = job;}public String getEmpNo() {return empNo;}public void setEmpNo(String empNo) {this.empNo = empNo;}public String geteName() {return eName;}public void seteName(String eName) {this.eName = eName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;} }
總結(jié)
以上是生活随笔為你收集整理的基于注解配置简单的SpringMVC+Mybatis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金山网络-软件测试一面
- 下一篇: 原来这才是体制内笔杆子干部竞聘演讲稿