Spring+SpringMVC+MyBatis+MySql框架整合

Spring+SpringMVC+MyBatis框架整合,数据库使用MySql,实例不涉及到真实业务。

在真实业务中,项目用maven进行管理,分页使用插件,登录等使用对应的拦截器处理,

如果涉及到分布式,可以使用rmi,webservice,http等技术,根据实际情况,这里只是将

Spring,SpringMVC,Mybatis单纯的进行整合。

关于Spring使用注解还是XML形式,官方文档中回答了其问题,告诉我们两者结合使用,

也可单独使用,仁者见仁,智者见智。

关于MyBatis是使用注解还是XML形式,还是根据实际情况,使用注解着实简单,

但是维护sql费劲,使用XML维护sql方便,但是结构相对复杂。一般推荐简单

sql查询等用注解,对于长篇大论的sql还是用XML形式,维护相对轻松。

 

实例项目环境配置:

操作系统: windows7 64位

web基本环境: eclipse +jdk1.8.0_91 + apache-tomcat-7.0.56

数据库: mysql-5.7.14-winx64

spring版本: Spring+SpringMVC 4.1.8

MyBatis和Spring整合: mybatis-3.2.7.jar + mybatis-spring-1.2.2.jar

Memcached做缓存技术

 

实例均通过注解完成

一 实例项目结构

项目整体结构:

Spring+SpringMVC+MyBatis+MySql框架整合_第1张图片

java文件包结构:

Spring+SpringMVC+MyBatis+MySql框架整合_第2张图片

config配置文件结构:

Spring+SpringMVC+MyBatis+MySql框架整合_第3张图片

二  项目jar包

Spring+SpringMVC+MyBatis+MySql框架整合_第4张图片

Spring+SpringMVC+MyBatis+MySql框架整合_第5张图片

关于jar包的简单分析,其中存在技术共用jar包的情况,jar包交互等情况,只写在了某一处:

Spring+springMVC的jar包以及技术aop:

aopalliance-1.0.jar

spring-aop-4.1.8.RELEASE.jar

spring-aspects-4.1.8.RELEASE.jar

spring-beans-4.1.8.RELEASE.jar

spring-context-4.1.8.RELEASE.jar

spring-context-support-4.1.8.RELEASE.jar

spring-core-4.1.8.RELEASE.jar

spring-expression-4.1.8.RELEASE.jar

spring-instrument-4.1.8.RELEASE.jar

spring-instrument-tomcat-4.1.8.RELEASE.jar

spring-jdbc-4.1.8.RELEASE.jar

spring-jms-4.1.8.RELEASE.jar

spring-messaging-4.1.8.RELEASE.jar

spring-orm-4.1.8.RELEASE.jar

spring-oxm-4.1.8.RELEASE.jar

spring-test-4.1.8.RELEASE.jar

spring-tx-4.1.8.RELEASE.jar

spring-web-4.1.8.RELEASE.jar

spring-webmvc-4.1.8.RELEASE.jar

spring-webmvc-portlet-4.1.8.RELEASE.jar

commons-logging.jar  ------Spring依赖

数据库连接池:

dbcp:

commons-collections.jar

commons-dbcp.jar

commons-pool.jar

c3p0:

c3p0-0.9.1.2.jar

MyBatis和Spring整合jar:

mybatis-3.2.7.jar

mybatis-spring-1.2.2.jar

MySql数据库驱动jar:

mysql-connector-java-5.1.21.jar

json处理,包括SpringMVC配置或自己通过json-lib包写json处理类:

Jackson:

jackson-all-1.8.1.jar

jackson-annotations-2.3.0.jar

jackson-core-2.3.0.jar

jackson-core-asl-1.9.9.jar

jackson-core-lgpl-1.9.6.jar

jackson-databind-2.3.0.jar

jackson-mapper-asl-1.9.6.jar

json:

json-lib-2.4-jdk15.jar

文件上传:

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

commons-beanutils-1.7.0.jar

动态代理:

cglib-nodep-2.1_3.jar

Memcached相关jar:

java_memcached-release_2.6.6.jar

slf4j-api-1.5.8.jar

slf4j-log4j12-1.5.8.jar

log4j-1.2.15.jar

commons-pool.jar(与连接池等其他技术共用)

jstl标准标签库相关必须jar:

jstl.jar

standard.jar

单元测试:

junit-4.4.jar

xml文件读取:

dom4j-1.6.1.jar

servlet:

servlet-api.jar

三  spring的applicationContext.xml配置

文件中配置内容:

1. 扫描配置

2. 注解配置

3. 数据库连接池配置,参考spring数据源配置

4. MyBatis与Spring整合配置

5. 数据库注解事物管理

 

    
  
    
    
    
	
		
	
	 
      
          
              
                  
                classpath:developer-jdbc.properties              
              
          
      
    
      
      
          
          
            ${jdbc.driver}  
          
          
          
            ${jdbc.url}  
          
          
          
            ${jdbc.username}  
          
          
          
            ${jdbc.password}  
          
      
      
      
          
          
      
      
    
    
	
		
	
    
      
      
          
              
          
      
    
    
    
    

 

四  SpringMVC的spring-mvc.xml配置

配置内容:

1. 注解驱动,使用注解的前提配置

2. Controller层应该扫描的文件位置

3. 视图解析器,视图跳转的位置

4. 使用Jackson处理json的配置

5. 文件上传配置

 

  
  
    
    
      
      
          
      
            
            
            
            
     
    
	
	
	
		
			
				
					
						
							
							
								text/html;charset=UTF-8
							
						
					
				
				
				
					
					
						
							application/json;charset=UTF-8
						
					
				
			
		
	
      
    
    	
     

 

五 MyBatis的mybatis-config.xml配置

文件配置内容:

1. 实体别名

2. Sql映射文件位置

注意: MyBatis可以配置数据源以及事物管理,与Spring整合后数据源和事物配置都交给

spring来完成,其自身只是负责持久层与数据库进行交互。

 




	
	       
		
	
	
	 
	
	
	
		
	

 

六 Mysql的驱动用户名等的developer-jdbc.properties配置

properties中将数据库连接基础信息配置在其中,spring配置文件中通过

PropertyPlaceholderConfigurer类来读取文件,并在spring配置文件中使用,

方便修改和维护。

 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/lanhuigu_web
jdbc.username=root
jdbc.password=lanhuigu

 

七 log4j日志文件的log4j.properties配置

 

#Console Log  
log4j.rootLogger=debug,info, console  
  
log4j.appender.console=org.apache.log4j.ConsoleAppender  
log4j.appender.console.Threshold=INFO  
log4j.appender.console.layout=org.apache.log4j.PatternLayout  
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F-%M:%L): %m%n

 

八 web.xml的配置

文件配置内容:

1. 激活tomcat处理静态资源文件,也可以在spring-mvc.xml中通过配置。

2. 在web启动时,加载Spring和SpringMVC配置文件

3. SpringMVC的转发器DispatcherServlet配置

4. 日志配置

5. 字符集编码配置

6. session会话超时配置

7. 默认错误页面配置

 



  	
	
		default
		*.otf
	
	
		default
		*.eot
	
	
		default
		*.svg
	
	
		default
		*.ttf
	
	
		default
		*.woff
	
	
		default
		*.woff2
	
  	
		default
		*.ico
	
  	
		default
		*.jpg
	
	
		default
		*.gif
	
	
		default
		*.png
	
	
		default
		*.js
	
	
		default
		*.css
	
	
		default
		*.pdf
	
 	
 	
  	
  	
		contextConfigLocation
		
			classpath:applicationContext.xml
		
  	
  	
    	
            org.springframework.web.context.ContextLoaderListener
      	
  	
  	
 
  	
 	  
    	springMVCDispatcherServlet  
    	org.springframework.web.servlet.DispatcherServlet  
    	  
    	  
        	contextConfigLocation  
       	 	classpath:spring-mvc.xml  
    	  
    	  
    	1  
  	  
  	  
    	springMVCDispatcherServlet  
    	/  
  	  
  	
  
 	
 	
    	log4jConfigLocation
    	classpath:log4j.properties
  	
  	
  		log4jRefreshInterval
    	600000
 	
    
        
        	org.springframework.web.util.Log4jConfigListener
        
    
    
  
  	
  	
    	encodingFilter
    	
    		org.springframework.web.filter.CharacterEncodingFilter
    	
    	
      		encoding
      		UTF-8
    	
    	
      		forceEncoding
      		true
    	
  	
  	
    	encodingFilter
    	/*
  	
    
  	
  	
	
		400
		/common/error/400.jsp
	
	
		404
		/common/error/404.jsp
	
	
		java.lang.Throwable
		/common/error/500.jsp
	
	
		500
		/common/error/500.jsp
	

	
	
		30
	
	
	
      
      index.jsp  
      

 

九 Spring的业务接口配置

service下的IUserService接口:

 

package com.lanhuigu.service.user;  
  
import org.springframework.stereotype.Service;

import com.lanhuigu.dao.model.user.User;
@Service  
public interface IUserService {  
    public User queryUserById(int userId);  
}

 

service下的UserServiceImpl业务实现:

 

package com.lanhuigu.service.user.impl;  
  
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.lanhuigu.dao.map.user.UserMapper;
import com.lanhuigu.dao.model.user.User;
import com.lanhuigu.service.user.IUserService;
@Component 
public class UserServiceImpl  implements IUserService {  
    @Autowired
    private UserMapper userMapper;
    
   // @Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public User queryUserById(int userId) {  
       // 1. MyBatis注解形式使用
       User user = userMapper.queryUserById(userId);  
       // 2. MyBatis XML形式使用
    	//User user = userMapper.queryUserByIdOld(userId);  
       return user;  
    }  
  
}

 

十 SpringMVC的controller层配置

IndexController.java代码:

 

package com.lanhuigu.controller.index;

import javax.servlet.http.HttpServletRequest;

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

import com.lanhuigu.dao.model.user.User;
import com.lanhuigu.service.user.IUserService;

@Controller
public class IndexController{
    @Autowired
    IUserService userService;
    
    @RequestMapping(value="/index")
    public String index(HttpServletRequest request) {
    	// 数据交互测试
        User user = userService.queryUserById(1);  
        if (user == null) {  
            System.out.println("用户为空");  
        } else {  
            System.out.println(user.getUserName());  
        }
        
        request.setAttribute("user", user);
        
        return "index";
    }
}

 

十一 MyBatis映射文件和User实体配置,数据库表和数据

User.java:

 

package com.lanhuigu.dao.model.user;

public class User {
	private Integer userId;
	private String userName;
	private String password;
	
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 

 

 

UserMapper.java:

 

package com.lanhuigu.dao.map.user;  
  
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.lanhuigu.dao.model.user.User;
  
public interface UserMapper {  
	// MyBatis注解形式查询
    @Select(" select f_userId userId,f_userName userName,f_password password from t_user_main where f_userId = #{userId} ")  
    public User queryUserById(@Param("userId") int userId); 
    // MyBatis XML形式查询(一定要配置对应的UserMapper.XML文件)
    public User queryUserByIdOld(@Param("userId") int userId); 
}

 

 

 

UserMapper.xml:

 

  
  
  
   

 

数据库表和数据:

表:

 

CREATE TABLE `t_user_main` (
  `f_userId` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `f_userName` varchar(225) DEFAULT NULL COMMENT '用户名',
  `f_password` varchar(255) DEFAULT NULL COMMENT '用户密码',
  PRIMARY KEY (`f_userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

数据:

insert into t_user_main values(1,'test','123456');

 

十二 jsp文件下的测试index.jsp代码以及WebContent下common中的错误页面配置

页面路径截图:

Spring+SpringMVC+MyBatis+MySql框架整合_第6张图片

index.jsp:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  
    My JSP 'index.jsp' starting page
	
	
	    
	
	
  
  
  
  ******数据交互测试******
用户名:${user.userName }
密码:${user.password }


common文件下error中的页面:

 

400.jsp

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Insert title here


	400错误页面Test

 

404.jsp

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Insert title here


	404错误页面Test


 

500.jsp

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Insert title here


	500错误页面

 

十三 将web项目加入tomcat,启动服务

访问方式: http://ip:端口/项目名称/index

eg:

http://localhost:9000/lanhuigu/index

十四 页面效果

Spring+SpringMVC+MyBatis+MySql框架整合_第7张图片

源码下载地址: http://download.csdn.net/detail/yhl_jxy/9694597

 

你可能感兴趣的:(Spring+SpringMVC+MyBatis+MySql框架整合)