mybatis和springMVC整合

一、jar包只列出部分:

   spring-aop-3.2.6.RELEASE.jar
spring-aspects-3.2.6.RELEASE.jar
spring-beans-3.2.6.RELEASE.jar
spring-context-3.2.6.RELEASE.jar
spring-context-support-3.2.6.RELEASE.jar
spring-core-3.2.6.RELEASE.jar
spring-expression-3.2.6.RELEASE.jar
spring-jdbc-3.2.6.RELEASE.jar
spring-orm-3.2.6.RELEASE.jar
spring-tx-3.2.6.RELEASE.jar
spring-web-3.2.6.RELEASE.jar
spring-webmvc-3.2.6.RELEASE.jar

log4j-1.2.12.jar
mybatis-3.2.4.jar
mybatis-spring-1.2.2.jar

mysql-connector-java-5.1.6.jar

项目的包结构:

com.wa.xwolf.sblog
com.wa.xwolf.sblog.bean
com.wa.xwolf.sblog.controller
com.wa.xwolf.sblog.dao
com.wa.xwolf.sblog.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 >
   
    <typeAliases >
     <package name="com.wa.xwolf.sblog.bean" />
    </typeAliases>
   
   </configuration>

三、application-context.xml:
 注释部分事务增强,此处没有用到。

还有一个问题写在jdbc.proeprties中的数据库信息读取不到,只好写在配置文件中。暂时没有找到解决办法。

<?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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd"
         default-autowire="byName" default-lazy-init="false">
        
    <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">       
        <property name="locations">  
            <list> 
                <value>classpath:jdbc.properties</value> 
            </list>
        </property>
    </bean>

        <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/sblog?characterEncoding=UTF-8"/>
        <property name="username" value="blog"/>
        <property name="password" value="xwolf@blog"/>
       
        
    </bean>


       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:config.xml"></property>
        <property name="mapperLocations" value="classpath:com/wa/xwolf/sblog/mapper/*.xml"></property>
    </bean>
    
    
    <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.wa.xwolf.sblog.dao"></property>
    </bean>
    
    
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property> 
    </bean>

    <!-- <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="get*" propagation="REQUIRED" read-only="true" />
            <tx:method name="count*" propagation="REQUIRED" read-only="true" />
            <tx:method name="find*" propagation="REQUIRED" read-only="true" />
            <tx:method name="list*" propagation="REQUIRED" read-only="true" />
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config expose-proxy="true">
        <aop:pointcut id="txPointcut" 
            expression="execution(* com.wa.xwolf.sblog.*.service.*Service.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
    </aop:config> -->
    
    <!-- <context:component-scan base-package="com.wa.*" use-default-filters="false">
        <context:include-filter type="regex" expression="com.wa.xwolf.sblog.service.*"/>
        <context:include-filter type="regex" expression="com.wa.xwolf.sblog.controller.*"/>
        <context:include-filter type="regex" expression="com.wa.xwolf.sblog.dao.*"/>
    </context:component-scan> -->
    
</beans>


三、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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
   
   
     <mvc:annotation-driven />
     
    <context:component-scan base-package="com.wa.xwolf.sblog" >
        <!-- <context:include-filter type="regex" expression="com.wa.xwolf.sblog.*.controller.*"/>
        <context:include-filter type="regex" expression="com.wa.xwolf.sblog.*.dao.*"/> -->
    </context:component-scan>
    
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    
    <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="com.wa.framework.web.DataBinding" />
        </property>
        <property name="messageConverters">
            <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
            </bean>
        </property>
    </bean> -->
      <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
      
      </bean>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    </bean>
    
    <mvc:default-servlet-handler />

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
        <property name="maxUploadSize" value="2097152"/>
    </bean> 
     
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
        <property name="exceptionMappings"> 
            <props> 
                <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">/handelException</prop> 
            </props> 
        </property> 
    </bean>

    <aop:aspectj-autoproxy proxy-target-class="true" />
</beans>


四、UserDao:

import com.wa.xwolf.sblog.bean.User;

public interface UserDao {
    
    public void addUser(User user);

}

五、UserMapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC   
    "-//mybatis.org//DTD Mapper 3.3//EN"  
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
   

   <mapper namespace="com.wa.xwolf.sblog.dao.UserDao">
      <insert id="addUser" parameterType="User">
         insert into sys_user(id,username,pwd,email,regtime) values(#{id},#{username},#{pwd},#{email},#{regtime})
      </insert>
   </mapper> 

六、controller:

package com.wa.xwolf.sblog.controller;

import java.io.IOException;
import java.io.Writer;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;





import com.alibaba.fastjson.JSONObject;
import com.wa.xwolf.sblog.bean.User;
import com.wa.xwolf.sblog.dao.UserDao;
import com.wa.xwolf.sblog.util.UUIDUtils;

@Controller
public class CommonController {
    
    @Autowired
    UserDao userDao;
    
    private Logger log = Logger.getLogger(CommonController.class);
    /**
     * 至注册页面 
     * @return
     */
    @RequestMapping("/toReg")
    public String toLogin(){
        return "common/reg";
    }
    /**
     * 用户注册
     * @param request
     * @param writer
     */
    @RequestMapping("/reg")
    public void reg(HttpServletRequest request,Writer writer){
        String name = request.getParameter("name");
        String password = request.getParameter("pwd");
        String mail = request.getParameter("mail");
        
        User user = new User();
        user.setEmail(mail);
        user.setUsername(name);
        user.setPwd(password);
        user.setId(UUIDUtils.getLowerCase());
        //user.setRegip(CommonUtils.getIp(request));
        user.setRegtime(new Date());
        JSONObject object = new JSONObject() ;
        
        try {
            userDao.addUser(user);
            object.put("success",true);
            log.info(name+"在"+new Date()+"注册成功!");
        } catch (Exception e) {
            log.info("用户注册失败:"+e.getMessage());
            e.printStackTrace();
            object.put("success",false);
        }finally{
            try {
                writer.write(object.toJSONString());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}


七、reg.jsp:

 

<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  
    <head>
    <c:set var="tgt" value="${pageContext.request.contextPath}"></c:set>
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
     <script type="text/javascript" src="${tgt}/js/jquery-2.1.3.js"></script>
    <title>注册页面</title>
    <script type="text/javascript">
    
           
      function reg(){
          
          $.post("${pageContext.request.contextPath}/reg.htm",
                  $("#regForm").serialize(),
                  function(data){
              if (data.success){
                  $("#msg").html("用户注册成功");
              }else{
                  $("#msg").html("用户注册失败");
              }
              
          },
                  "json");
          
      }
    
    
    </script>
    </head>
    
    <body>
      
        <form action="" id="regForm">
          
          <table>
           <tr>
            <td><span style="color:red;" id="msg"></span></td>
           </tr>
           <tr>
           <td>用户名:</td>
            <td><input type="text" id="name" name="name" maxlength="50"></td>
           </tr>
           
            <tr>
           <td>密码:</td>
            <td><input type="password" id="pwd" name="pwd" maxlength="50"></td>
           </tr>
           
            <tr>
           <td>重复密码:</td>
            <td><input type="password" id="pwd2" maxlength="50"></td>
           </tr>
           
            <tr>
           <td>邮箱:</td>
            <td><input type="text" id="mail" name="mail"> </td>
           </tr>
           
             <tr>
           <td>
           
           <input type="button" value="注册" onclick="reg();">
           <input type="reset" value="重置">
           </td>
            
           </tr>
          
          </table>
        
        
        
        
        </form>
    
    
    </body>

</html>


经测试可以使用。

 
mybatis实战教程(mybatis in action)之一:开发环境搭建

mybatis实战教程(mybatis in action)之二:以接口的方式编程

mybatis实战教程(mybatis in action)之三:实现单表的增删改查等操作

mybatis实战教程(mybatis in action)之四:实现关联数据的查询

mybatis实战教程(mybatis in action)之五:mybatis与spring3集成

mybatis实战教程(mybatis in action)之六:mybatis与spring3 MVC 集成例子

mybatis实战教程(mybatis in action)之七:实现mybatis分页(源码下载)

mybatis实战教程(mybatis in action)之八:mybatis 动态 sql 语句基础

mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用

mybatis实战教程(mybatis in action)之十:mybatis SqlSessionSupport 的使用,构件DAO 层的应用

--------------------------------------补充教程-------------------------------------------
mybatis补充教程之一:在控制台显示sql语句,类似hibernate show_sql.

mybatis补充教程之二:传递多个参数的方法(Multiple parameters)

mybatis补充教程之三:缓存的使用

mybatis 例子:mybatis,spring,bootstrap 例子下载,支持移动设备 

 

posted @ 2015-01-05 09:52  snow__wolf  阅读(214)  评论(0)    收藏  举报