1. 程式人生 > >SSM(Spring+SpringMVC+MyBatis)開發極簡示例

SSM(Spring+SpringMVC+MyBatis)開發極簡示例

一、MyBatis

百度百科:MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java物件)對映成資料庫中的記錄。

1、生成ORMapping檔案

生成資料庫表對應的Dao、Model、Mapping檔案,可以使用工具MyBatis Generator,也可以在已有程式碼基礎上覆制、修改。
1.1 Dao檔案

一般以Mapper結尾,當然也可以使用自己熟悉的風格,以Dao替換Mapper等

public interface CxMapper {
    Cxbb selectByPK(CxbbKey key);
    Cxbb selectByMc(@Param("mc") String mc);
    int deleteByPrimaryKey(CxKey key);
    int insert(Cxbb record);
    int insertSelective(Cxbb record);
    List<Cxbb> selectByExample(CxExample example)
; }

1.2 Model檔案就是getter/setter方法的java類(POJO),對應表結構
1.3 Mapping檔案簡單理解就是SQL語句

  <insert id="insert" parameterType="com.mtest.po.Cxbb">
    insert into CXBB (MC, MS, MD5)
    values (#{mc,jdbcType=VARCHAR}, #{ms,jdbcType=VARCHAR}, #{md5,jdbcType=VARCHAR})
  </insert>

2、配置Spring整合檔案

1.4 spring-mybatis.xml

<!-- 自動掃描 --> 
  <context:component-scan base-package="com.mtest"/> 
  <!-- JDBC配置檔案 --> 
  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:jdbc.properties"/>
  </bean>

  <!-- 資料來源 -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${driver}"/> 
    <property name="url" value="${url}"/> 
    <property name="username" value="${username}"/> 
    <property name="password" value="${password}"/>
  </bean> 
   
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/> 
    <!-- 自動掃描mapping.xml檔案 --> 
    <property name="mapperLocations" value="classpath:com/mtest/mapper/*.xml"/>
  </bean> 
  <!-- DAO介面所在包名,Spring會自動查詢其下的類 --> 
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.mtest.dao"/> 
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  </bean> 
  <!-- (事務管理)transaction manager, use JtaTransactionManager for global tx --> 
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
  </bean>

二、SpringMVC

1、生成控制器類CxbbController

@Controller
@RequestMapping("/test")
public class CxbbController {
	@Resource
	private CxbbMapper cxbbDao = null;
	@RequestMapping("/showCxbb")
	public String toIndex(HttpServletRequest request, Model model) {
		String mc = request.getParameter("mc");
		Cxbb cxbb = cxbbDao.selectByMc(mc);
		model.addAttribute("record", cxbb);
		return "showCxbb";
	}
}

2、配置spring-mvc.xml

  <!-- 自動掃描該包,使SpringMVC認為包下用了@controller註解的類是控制器 -->
  <!-- 如果一個類帶了@Component、@Repository、@Controller、@Service等註解,將自動註冊到Spring容器,不需要再在applicationContext.xml檔案定義bean了 -->
  <context:component-scan base-package="com.mtest.controller"/>

  <!-- 啟動SpringMVC的註解功能,完成請求和註解POJO的對映 -->  
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
      <list> 
        <ref bean="mappingJacksonHttpMessageConverter"/>  
        <!-- JSON轉換器 --> 
      </list> 
    </property> 
  </bean>  
  <!-- 定義跳轉的檔案的前後綴 ,檢視模式配置-->  
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <!-- 自動將action方法return的字串加上字首和字尾,生成對應jsp -->  
    <property name="prefix" value="/WEB-INF/jsp/"/>  
    <property name="suffix" value=".jsp"/> 
  </bean>  

3、配置web.xml

 <!-- Spring和mybatis的配置檔案 -->  
  <context-param> 
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath:spring-mybatis.xml</param-value> 
  </context-param>  
  
  <!-- Spring監聽器 -->  
  <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
  </listener>  
  <!-- 防止Spring記憶體溢位監聽器 -->  
  <listener> 
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> 
  </listener>  
  
  <!-- Spring MVC servlet -->  
  <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-supported>true</async-supported> 
  </servlet>  
  <servlet-mapping> 
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern> 
  </servlet-mapping>  
  <welcome-file-list> 
    <welcome-file>/index.jsp</welcome-file> 
  </welcome-file-list> 

4、showCxbb.jsp【對應controller返回字串】

jsp檔案路徑【ssmtest\WEB-INF\jsp】,參見springMVC配置檔案

<html>
<head>
	<title>SSM測試</title>
</head>
<body>
	<!-- 從controller中獲取資料 -->
	<p>檔名稱: ${record.mc}  </p>
	<p>MD5: ${record.md5}  </p>
</body>
</html>

三、部署測試

部署、測試省略N個字
測試結果
備註:為了減少程式碼篇幅和突出關鍵部分,故此程式碼僅是部分內容。