注意:这里使用了mybatis3.2.1版本,刚开始用了3.4.1的版本,会报一个很奇怪的错(java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;),换了这个包就好了

  1. 所需包,spring的jar包,mybatis的jar包,spring-mybatis.jar,数据库连接的mysql-connection.jar,日志的log4j.jar(33个包,如果用到了jstl还需要加入jstl包,36个)

  2. 在web.xml中添加spring的监听,以及配置springmvc的核心文件。


<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <!-- spring文件的监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- spring 加载配置文件的路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:beans.xml</param-value> </context-param> <!-- 配置springmvc核心控制器 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 加个过滤器,让所有请求页面的编码方式都为utf-8 --> <filter> <filter-name>CharEncodingFilter</filter-name> <filter-class>com.sram.filter.CharEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharEncodingFilter</filter-name> <!-- /*表示所有的请求都过滤 --> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

至此,web.xml文件配置结束

  1. 在WEB-INF目录添加spring-servlet.xml(ps:web.xml中配置的servlet核心名字叫spring,它就会去找叫spring-servlet.xml的springmvc配置文件)

配置如下:


<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 注解探测器 --> <context:component-scan base-package="com.sram.controller"/> <!-- 打开mvc驱动 --> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
  1. 在src目录下添加spring的配置文件,beans.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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <!-- 打开spring的Annotation --> <context:annotation-config/> <!-- 设置spring去哪些包中找Annotation --> <context:component-scan base-package="com.sram"/> <!-- 创建数据库连接 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!-- 引入src目录下的jdbc.properties文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 创建spring的SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 加载实体类映射文件 --> <property name="mapperLocations" value="classpath:com/sram/model/*.xml"></property> <!-- 加载实体类对象 --> <property name="typeAliasesPackage" value="com.sram.model"></property> </bean> <!-- 配置spring的事务处理 --> <!-- 创建 事务管理器 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置aop,spring是通过aop进行事务管理 --> <aop:config> <!-- 设置在哪些方法中打开事务 --> <aop:pointcut id="allMethods" expression="execution(* com.sram.dao.*.*(..))"/> <!-- 加入事务控制的具体位置 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods"/> </aop:config> <!-- 配置哪些方法要加入事务控制 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <!-- 所有方法加入事务 --> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> </beans>
  1. 数据源文件jdbc.properties内容如下

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis

jdbc.username=root

jdbc.password=root

  1. 日志文件log4j.properties

log4j.rootLogger=INFO, stdout #log4j.logger.test=info #log4j.logger.org.apache.jasper = DEBUG #log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG #log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG #log4j.logger.com.fiscal = DEBUG #log4j.logger.com.system = DEBUG log4j.logger.com.ibatis = DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG log4j.logger.java.sql.Connection = DEBUG log4j.logger.java.sql.Statement = DEBUG log4j.logger.java.sql.PreparedStatement = DEBUG log4j.logger.java.sql.ResultSet = INFO log4j.appender.stdout=org.apache.log4j.ConsoleAppender #log4j.appender.fileout=org.apache.log4j.RollingFileAppender #log4j.appender.fileout.File=e:/log/ibatis.log #log4j.appender.fileout.MaxFileSize=10000KB log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} :%m%n #log4j.appender.fileout.layout=org.apache.log4j.PatternLayout #log4j.appender.fileout.layout.ConversionPattern=[%-5p]_%d{yyyy-MM-dd HH:mm:ss} :%m%n #log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout # log4j.logger.org=info

配置文件结束 jdbc.propertise和log4j.propertise放在src根目录下

  1. 下面写测试代码
  • UserController.java

package com.tt.controller; /** * Created by lx7ly on 9/17/16. */ import javax.annotation.Resource; import com.tt.dao.IUserDao; import com.tt.model.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller("userController") @RequestMapping("user") public class UserController { private IUserDao userDao; @Resource public void setUserDao(IUserDao userDao) { this.userDao = userDao; } public UserController() { } @RequestMapping(value = "/users", method = RequestMethod.GET) public String list(Model model) { User u = userDao.loadById(1); System.out.println(u); //model.addAttribute("users", users); return "list"; } }
  • CharEncodingFilter.java

package com.tt.filter; import javax.servlet.*; import java.io.IOException; /** * Created by lx7ly on 9/17/16. */ public class CharEncodingFilter implements Filter{ private String encoding; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); //response.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { //config中保存这过滤器的配置信息,如果在web.xml中配置的过滤器编码不是utf8,则改成utf8; String e = config.getInitParameter("encoding"); if(e == null || e.equals("")) { encoding = "UTF-8"; } else { encoding = e; } } }
  • User.java

package com.tt.model; /** * Created by lx7ly on 9/17/16. */ public class User { private int id; private String name; private String password; public User() { } public User(String name, String password) { super(); this.name = name; this.password = password; } public User(int id, String name, String password) { super(); this.id = id; this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", password=" + password + "]"; } }
  • User.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="com.tt.model.User"> <select id="load" parameterType="int" resultType="com.tt.model.User"> select * from t_user where id = #{id} </select> </mapper>
  • UserException.java

package com.tt.model; /** * Created by lx7ly on 9/17/16. */ public class UserException extends RuntimeException { public UserException() { super(); } public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } public UserException(String message, Throwable cause) { super(message, cause); } public UserException(String message) { super(message); } public UserException(Throwable cause) { super(cause); } }
  • IUserDao.java

package com.tt.dao; import com.tt.model.User; /** * Created by lx7ly on 9/17/16. */ public interface IUserDao { void add(User user); void delete(int id); void update(User user); User loadById(int id); User loadByName(String username); User login(String username, String password); }
  • UserDao.java

package com.tt.dao; import com.tt.model.User; import com.tt.model.UserException; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.stereotype.Repository; import javax.annotation.Resource; /** * Created by lx7ly on 9/17/16. */ @Repository("userDao") public class UserDao implements IUserDao{ private SqlSessionFactory sqlSessionFactory = null; @Resource public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } public void add(User user) { } public void delete(int id) { } public void update(User user) { } @Override public User loadById(int id) { SqlSession sqlSession = null; User u = null; try{ sqlSession = sqlSessionFactory.openSession(); u = sqlSession.selectOne("com.tt.model.User.load", id); }finally{ assert sqlSession != null; sqlSession.close(); } return u; } public User loadByName(String username) { return null; } public User login(String username, String password) { User u = this.loadByName(username); if(u == null){ throw new UserException("用户不存在"); }else if(!password.trim().equals(u.getPassword())){ throw new UserException("密码不对!!"); } return u; } }
  • IUserService.java

package com.tt.service; import com.tt.model.User; /** * Created by lx7ly on 9/17/16. */ public interface IUserService { User loadById(int id); } + UserService.java package com.tt.service; import com.tt.dao.IUserDao; import com.tt.model.User; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * Created by lx7ly on 9/17/16. */ @Service("userService") public class UserService implements IUserService{ private IUserDao userDao; @Resource public void setUserDao(IUserDao userDao) { this.userDao = userDao; } @Override public User loadById(int id) { return userDao.loadById(1); } }
  • UserServiceTest.java

package com.tt.service; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import javax.annotation.Resource; /** * Created by lx7ly on 9/17/16. */ @RunWith(SpringJUnit4ClassRunner.class) //表示继承了SpringJUnit4ClassRunner类 @ContextConfiguration(locations = {"classpath:spring.xml"}) public class UserServiceTest { private IUserService userService; @Test public void testSetUserDao() throws Exception { } @Test public void testLoadById() throws Exception { System.out.println(userService.loadById(1)); } @Resource public void setUserService(IUserService userService) { this.userService = userService; } }
  • list.jsp

<%-- Created by IntelliJ IDEA. User: lx7ly Date: 9/17/16 Time: 5:34 PM To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>list.jsp</title> </head> <body> helloworld !! this is list.jsp </body> </html>
  • ssm.sql

create database ssm; use ssm; create table t_user (id int primary key auto_increment, name varchar(20), password varchar(20)); insert into t_user(name, password) values ('root', 'root'); insert into t_user(name, password) values ('zhangsan', '123'); insert into t_user(name, password) values ('李四', '123');
  1. 测试spring+mybatis

  2. 测试spring+mybatis+springmvc

    url: http://127.0.0.1:8080/ssm/user/users

spring4.1.3+springmvc+mybatis3.2.1整合的更多相关文章

  1. spring4+springmvc+springdataJPA+hibernate4+Junit4整合懒加载问题

    文章目录 技术交流 #摘要 本文主要是为了解决"spring4+springmvc+springdataJPA+hibernate4+junit4整合",注解了OneToMany. ...

  2. Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

    Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍 spring集成 mybatis Spring4.x零配置框架搭建 两年前一直在做后 ...

  3. 1.springMVC+spring+Mybatis的整合思路

    SSM整合的过程:就是把一些东西交给spring管理,也就是添加配置文件的一个过程.那么有哪些东西我们要交给spring管理呢?大概有以下几个: 1.数据源(可配置数据库连接池) 2.SqlSessi ...

  4. Mybatis3.2.1整合Spring3.1

    Mybatis3.2.1整合Spring3.1 根 据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对 Mybatis ...

  5. SpringMVC中使用Swagger2整合

    Swagger2是什么 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 W ...

  6. SSM框架整合的详细过程(含每一步的分析及代码)。实质上是SpringMVC与mybatis的整合,应为spring与SpringMVC不需要整合。

    为了更好的学习 springmvc和mybatis整合开发的方法,需要将springmvc和mybatis进行整合. 整合目标:控制层采用springmvc.持久层使用mybatis实现. 1.1 需 ...

  7. Spring+SpringMVC+MyBatis+Maven框架整合

    本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...

  8. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  9. JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合

    搭建 SpringMVC&Spring&MyBatis三大整合 传送门 1.准备 测试搭建S pringMVC&Spring&MyBatis三大整合 用例   a)准备 ...

随机推荐

  1. Adobe Acrobat XI Pro 官方下载及安装破解

    Adobe公司推出的PDF 格式是一种全新的电子文档格式.借助 Acrobat ,您几乎可以用便携式文档格式 (Portable Document Format ,简称 PDF) 出版所有的文档. P ...

  2. 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)

    Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int ...

  3. Qt编译时MinGW去掉对gcc动态库的依赖(去掉对libgcc_s_dw2-1.dll,libstdc++-6.dll的依赖)

    用Qt写点东西,我一般是下载官方的MinGW编译工具包,它有个不好的地方,经常还会多一些除了Qt库以外的其它的依赖动态链接库,比如:libgcc_s_dw2-1.dll,libstdc++-6.dll ...

  4. android中获取root权限的方法以及原理(转)

    一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...

  5. C++死锁解决心得

    一. 概述C++多线程开发中,容易出现死锁导致程序挂起的现象.关于死锁的信息,见百度百科http://baike.baidu.com/view/121723.htm. 解决步骤分为三步:1.检测死锁线 ...

  6. saiku安装方法总结

    最近研究pentaho和saiku,在网上搜集了一些安装和配置的方法,亲测有效,在这分享总结一下方便日后使用. Saiku主要提供两种安装方式,独立运行和集成在Pentaho BI平台上,本文会简单介 ...

  7. iOS禁用部分文件ARC

    TARGETS的build Phases中的Compile Source里修改文件备注文件参数设定: 增加-fobjc-arc来使单个文件 支持ARC,或者添加-fno-objc-arc使单个文件不支 ...

  8. 深度学习工具caffe具体安装指南

    caffe安装指南-吐血整理 前言: 在一台系统环境较好的linux机器上能够非常easy的安装caffe,可是假设系统本身非常旧,又没有GPU的话.安装就太麻烦了,全部都得从头做起,本文档旨在尽可能 ...

  9. 正整数从1到N,输出按照字典序排序的前K个数

    #include <iostream> #include <cassert> using namespace std; ; char a[max_len]; void topK ...

  10. BZOJ 1066: [SCOI2007]蜥蜴( 最大流 )

    结点容量..拆点然后随便写 --------------------------------------------------------------- #include<cstdio> ...