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 例子下载,支持移动设备

浙公网安备 33010602011771号