環(huán)境準(zhǔn)備:
eclipse示例數(shù)據(jù)庫三大框架所需jar包以及整合jar包Tomcat7.0第一步:準(zhǔn)備數(shù)據(jù)庫(類別–商品示例),分析示例需求,這里就做一個簡單的商品查詢。以及商品插入: 字段示例如下(類別表):
商品表:
第二步:建立web項(xiàng)目,導(dǎo)入項(xiàng)目所需jar包。建立項(xiàng)目實(shí)體,包結(jié)構(gòu)如下:
第三步:web.xml配置SPRing上下文監(jiān)聽器容器以及SpringMVC轉(zhuǎn)發(fā)器: 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" version="3.0"> <!-- 配置springmvc的轉(zhuǎn)發(fā)器 --> <servlet> <servlet-name>dispatcher</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> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 配置spring的上下文監(jiān)聽器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param></web-app>第四步:新建applicationContext.xml和spring-mvc.xml文件,對程序進(jìn)行分包處理,建立mybatis-config.xml文件及配置,建立mapper包,配置項(xiàng)目需求的映射文件product-mapper.xml: product-mapper.xml代碼如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="product.ProductDao"> <!-- 查詢所有商品操作 --> <select id="queryProducts" resultType="entity.Products"> select * from products </select> <!-- 插入一條商品操作 --> <insert id="insertProduct" parameterType="entity.Products"> insert into products(pname) values(#{pname}) </insert></mapper>mybatis-config.xml配置代碼:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 這里只需要配置映射文件,數(shù)據(jù)源交給spring來配置 --> <mappers> <mapper resource="mapper/product-mapper.xml" /> </mappers></configuration>第五步:建立此次業(yè)務(wù)包product并建立與mapper下的映射文件對應(yīng)的dao接口,并對應(yīng)mapper內(nèi)的方法映射。 項(xiàng)目結(jié)構(gòu)至此如下:
dao接口代碼如下:
package product;import java.util.List;import entity.Products;public interface ProductDao { // 方法名要與xml對應(yīng)的映射id相同 List<Products> queryProducts(); int insertProduct(Products pro);}第六步:配置applicationContext.xml和spring-mvc.xml文件: 代碼如下: 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:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven /> <!-- 包掃描,不掃描service注解的類,防止因?yàn)閟pringMVC和spring的掃描產(chǎn)生事務(wù)提交回滾問題 --> <context:component-scan base-package="product"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan> <!-- 靜態(tài)資源的過濾,防止被springMVC攔截,這里是不攔截js下的所有文件 --> <mvc:resources location="/js/" mapping="/js/**"></mvc:resources> <!-- 文件上傳所需的多媒體處理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean></beans>applicationContext.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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"> <!-- 包掃描,不掃描controller注解的類,防止因?yàn)閟pringMVC和spring的掃描產(chǎn)生事務(wù)提交回滾問題 --> <context:component-scan base-package="product"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 數(shù)據(jù)源的配置,用來獲取連接 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.MySQL.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/mall"></property> <property name="username" value="root"></property> <property name="passWord" value="123456"></property> </bean> <!-- sqlsession工廠類,用來創(chuàng)建用戶會話 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 設(shè)置使用的數(shù)據(jù)源 --> <property name="dataSource" ref="dataSource"></property> <!-- 設(shè)置mybatis的配置文件地址 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean> <!-- 配置用來掃描mybatis映射的接口的掃描器 --> <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 設(shè)置掃描的包名,不同包用逗號隔開 --> <property name="basePackage" value="product"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> <!-- 事務(wù)管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 事務(wù)注解驅(qū)動 --> <tx:annotation-driven transaction-manager="transactionManager" /></beans>第七步:編寫service業(yè)務(wù)代碼(沒有寫頁面代碼,數(shù)據(jù)操作也都在程序內(nèi)執(zhí)行):
package product;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import entity.Products;/** * @author Administrator * 為Service添加Service注解及Transactional事務(wù)注解 */@Service@Transactionalpublic class ProductService { // 通過Autowired為Service注入dao,由注解驅(qū)動產(chǎn)生實(shí)現(xiàn)類的對象 @Autowired private ProductDao dao; // 查詢 public List<Products> queryProduct() { return dao.queryProducts(); } // 添加 public void insertProduct() { Products pro1 = new Products("p1"); Products pro2 = new Products("p2"); dao.insertProduct(pro1); dao.insertProduct(pro2); }}第八步:編寫Controller層代碼:
package product;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import entity.Products;import net.sf.json.JSONArray;/** * @author StruggleYang * Controller注解以及RequestMapping的url映射注解 */@Controller@RequestMapping("product")public class ProductController { // 注解注入service @Autowired private ProductService service; // ResponseBody無返回值 @ResponseBody @RequestMapping(value = "queryProduct", produces = "application/json;charset=utf-8") public String queryProduct() { List<Products> list = service.queryProduct(); return JSONArray.fromObject(list).toString(); } @RequestMapping("insert") @ResponseBody public void insertProduct(){ service.insertProduct(); }}第九步:測試 訪問: http://localhost:8080/ssmTest/product/queryProduct 結(jié)果如下:
訪問:http://localhost:8080/ssmTest/product/insert執(zhí)行后再次查詢結(jié)果:
注意:
測試中的業(yè)務(wù)無返回,在實(shí)際業(yè)務(wù)中將ResponseBody注解去掉,并返回具體的視圖名稱即可。本例中沒有復(fù)雜的業(yè)務(wù)結(jié)構(gòu),沒有對多對一,一對多,一對一關(guān)系進(jìn)行闡述,只做了最基礎(chǔ)的整合,實(shí)際中應(yīng)對更加復(fù)雜的業(yè)務(wù)還需進(jìn)行相應(yīng)的變換。在配置applicationContext.xml和spring-mvc.xml中,有context:component-scan標(biāo)簽的處理context:exclude-filter指定的不掃描,context:include-filter指定的掃描。具體參考: http://blog.csdn.net/chunqiuwei/article/details/16115135–【畢】
新聞熱點(diǎn)
疑難解答