Maven Spring MVC+Mybatisプロジェクト詳細

26756 ワード

前言
         最近は暇なので、復習してプロジェクトを作ります.今回は主にSpring+SpringMVC+Mybatisを使います.プロジェクトの耐久層はMybatis 3を使用して、コントロール層はSprigMVC 4.1を使用して、Spring 4.1を使用してコントローラを管理して、データベース接続池はdruidデータソースを使用して、このデータベースはしばらくMySQLを使用します.
1、データベース表の構造及びmavenプロジェクト構造
         データテーブルは非常に簡単です.
         
       mavenプロジェクトを作成します.詳細は前のmavenの作成を参照してください.http://blog.csdn.net/fengshizty/article/details/43019561)Maven Projectを作成する場合、Filterをorg.apache.maven.archtypesに選択します.関連項目の座標情報を記入した後、プロジェクトの構造は以下の通りです.
        
     注:src/main/java、src/test/java、Src/test/reourcesがない場合、このいくつかのSource Folderを作成します.
 2、pom.xml添加の対応するパッケージ依存性を修正する.
     ここで使用している全てのMavenの依存を貼り付けました.どのような役割に対応するかについて説明があります.
     pom.xml

	4.0.0
	org.andy.sm
	springmvc_mybatis_demo
	war
	0.0.1-SNAPSHOT

	springmvc_mybatis_demo Maven Webapp
	http://maven.apache.org

	
		UTF-8
		4.1.4.RELEASE
		2.5.0
	

	

		
			junit
			junit
			4.12
			test
		

		
		
			org.springframework
			spring-core
			${spring.version}
		

		
			org.springframework
			spring-beans
			${spring.version}
		

		
			org.springframework
			spring-context
			${spring.version}
		

		
			org.springframework
			spring-tx
			${spring.version}
		

		
			org.springframework
			spring-web
			${spring.version}
		

		
			org.springframework
			spring-webmvc
			${spring.version}
		

		
			org.springframework
			spring-jdbc
			${spring.version}
		

		
			org.springframework
			spring-test
			${spring.version}
			test
		

		
		
			org.mybatis
			mybatis
			3.2.8
		

		
		
			org.mybatis
			mybatis-spring
			1.2.2
		

		
		
			mysql
			mysql-connector-java
			5.1.34
		

		
		
			com.alibaba
			druid
			1.0.12
		

		
			org.aspectj
			aspectjweaver
			1.8.4
		

		
		
			log4j
			log4j
			1.2.17
		

		
		
			javax.servlet
			servlet-api
			3.0-alpha-1
		

		
			javax.servlet
			jstl
			1.2
		

		
		
			org.codehaus.jackson
			jackson-mapper-asl
			1.9.13
		

		
			com.alibaba
			fastjson
			1.2.3
		

		
			com.fasterxml.jackson.core
			jackson-annotations
			${jackson.version}
		

		
			com.fasterxml.jackson.core
			jackson-core
			${jackson.version}
		

		
			com.fasterxml.jackson.core
			jackson-databind
			${jackson.version}
		
		
		
			commons-io
			commons-io
			2.4
		

		
			commons-fileupload
			commons-fileupload
			1.2.2
		


	


	
		springmvc_mybatis_demo
		
			
			
				org.apache.maven.plugins
				maven-surefire-plugin
				2.4.2
				
					true
				
			

			
				org.apache.maven.plugins
				maven-war-plugin
				2.3
				
					src/main/webapp/WEB-INF/web.xml
				
			

			
			
				org.apache.maven.plugins
				maven-javadoc-plugin
				2.9.1
				
					target/javadoc
					target/javadoc
					UTF-8
					UTF-8
					UTF-8
					private
				
			

			
			
				org.codehaus.cargo
				cargo-maven2-plugin
				1.0
				
					
						tomcat6x
						D:\WebServer\apache-tomcat-6.0.39
					
					
						existing
						D:\WebServer\apache-tomcat-6.0.39
					
				
			

		

	

3、Generatorを使って自動的にMybatis関連表の情報を生成する
      表のModel,Mapping,Daoファイルを自動的に生成します. http://blog.csdn.net/fengshizty/article/details/43086833 
プロジェクトのSrc/main/javaパッケージに導入します.
      生成されたModelのUserInfoは以下の通りである.
UserInfo.java(List courseInfosが手動で追加された)
package org.andy.shop.model;

import java.util.List;

public class UserInfo {
	private Integer id;

	private String uname;

	private Integer unumber;

	private List courseInfos;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname == null ? null : uname.trim();
	}

	public Integer getUnumber() {
		return unumber;
	}

	public void setUnumber(Integer unumber) {
		this.unumber = unumber;
	}

	public List getCourseInfos() {
		return courseInfos;
	}

}
   Daoバッグの中のUserInfoMapper.java
  
package org.andy.shop.dao;

import java.util.List;

import org.andy.shop.model.UserInfo;

public interface UserInfoMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(UserInfo record);

    int insertSelective(UserInfo record);

    UserInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(UserInfo record);

    int updateByPrimaryKey(UserInfo record);
    
    List selectAll();
}
mapping中のプロファイルUserInfoMapper.xml



	
		
		
		
	
	
		id, uname, unumber
	
	
	
		delete from
		user_info
		where id = #{id,jdbcType=INTEGER}
	
	
		insert into user_info (id,
		uname, unumber
		)
		values (#{id,jdbcType=INTEGER},
		#{uname,jdbcType=VARCHAR},
		#{unumber,jdbcType=INTEGER}
		)
	
	
		insert into user_info
		
			
				id,
			
			
				uname,
			
			
				unumber,
			
		
		
			
				#{id,jdbcType=INTEGER},
			
			
				#{uname,jdbcType=VARCHAR},
			
			
				#{unumber,jdbcType=INTEGER},
			
		
	
	
		update user_info
		
			
				uname = #{uname,jdbcType=VARCHAR},
			
			
				unumber = #{unumber,jdbcType=INTEGER},
			
		
		where id = #{id,jdbcType=INTEGER}
	
	
		update user_info
		set uname = #{uname,jdbcType=VARCHAR},
		unumber =
		#{unumber,jdbcType=INTEGER}
		where id = #{id,jdbcType=INTEGER}
	

	
		
			
			
			
		


	
	
4、Springを導入し、関連属性を配置する
     src/main/resourceでspringのプロファイルを作成しました.ここでspring.xmlを作成しました.情報は以下の通りです.
   



	
	

	
	

5、Mybatisを導入し、データ接続池などの情報を配置する
   5.1、データ接続池druidの配置情報 
   接続池の設定情報は、config.propertiesで以下の通りです.
 
#mysql version database druid setting
validationQuery=SELECT 1
jdbc.url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=12345
  5.2、Mybatis関連情報の配置
    mybatisの設定情報は以下の通りです.spring-mybatis.xml(ps:名前は簡単につけます.)



	
	
		
		
		

		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	

	
	
		
		
		
	

	
		
		
	

	
	
		
	

	
	

	
	
		
			
			
			

			
			
			

		
	
	
	
		
		
	

主にデータ接続池、事務管理、mybatis関連マッピングなどを配置し、事務はaopの声明式事務を採用する.
6、日記の導入
     src/main/resourceにロゴ4 jログの設定情報を追加します.
   log 4 j.properties
### set log levels ###
log4j.rootLogger = INFO , C , D , E 

### console ###
log4j.appender.C = org.apache.log4j.ConsoleAppender
log4j.appender.C.Target = System.out
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ../logs/springmvc-mybatis-demo.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = INFO 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### exception ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ../logs/springmvc-mybatis-demo_error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = [sspringmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
7、Serviceを作成する
    src/main/javaに関連するorg.andy.shop.serviceバッグとorg.andy.shop.service.Implバッグを作成します.
    UserServiceインターフェース:
 
package org.andy.shop.service;

import java.util.List;

import org.andy.shop.model.UserInfo;

/**  
 *     :2015-1-27   5:15:03  
 * @author andy  
 * @version 2.2  
 */

public interface UserService {

	UserInfo getUserById(int id);
	
	List getUsers();
	
	int insert(UserInfo userInfo);
}
   UserServiceImplはServiceを実現する:
package org.andy.shop.service.impl;

import java.util.List;

import org.andy.shop.dao.UserInfoMapper;
import org.andy.shop.model.UserInfo;
import org.andy.shop.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 *     :2015-1-27   5:22:59
 * 
 * @author andy
 * @version 2.2
 */
@Service("userService")
public class UserServiceImpl implements UserService {

	@Autowired
	private UserInfoMapper userInfoMapper;

	@Override
	public UserInfo getUserById(int id) {
		return userInfoMapper.selectByPrimaryKey(id);
	}

	@Override
	public List getUsers() {
		return userInfoMapper.selectAll();
	}

	@Override
	public int insert(UserInfo userInfo) {
		
		int result = userInfoMapper.insert(userInfo);
		
		System.out.println(result);
		return result;
	}

}
8、SpringとMybatisの配置をテストします.
   Src/test/javaにテストクラスを書いて、データを読み出すことができるかどうかを検出します.読めばSpring+Mybatisの統合が成功したと証明します.
TestUserServiceテストクラス:
package org.andy.shop.service;

import java.util.List;

import org.andy.shop.model.UserInfo;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.alibaba.fastjson.JSON;

/**
 *     :2015-1-27   10:45:38
 * 
 * @author andy
 * @version 2.2
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml",
		"classpath:spring-mybatis.xml" })
public class TestUserService {

	private static final Logger LOGGER = Logger
			.getLogger(TestUserService.class);

	@Autowired
	private UserService userService;

	
	@Test
	public void testQueryById1() {
		UserInfo userInfo = userService.getUserById(1);
		LOGGER.info(JSON.toJSON(userInfo));
	}

	@Test
	public void testQueryAll() {
		List userInfos = userService.getUsers();
		LOGGER.info(JSON.toJSON(userInfos));
	}

	@Test
	public void testInsert() {
		UserInfo userInfo = new UserInfo();
		userInfo.setUname("xiaoming");
		userInfo.setUnumber(4);
		int result = userService.insert(userInfo);
		System.out.println(result);
	}
}
テストが成功すれば、もう半分成功したということです.
9、SprigMVCの導入
   9.1 SprigMVCの配置情報
    SpringMVCの構成情報は主にコントロール層Controllerのbean管理、ビュー層とコントロール層構成などを含み、以下はspring-mvc.xml情報である.
 



	
	

	
	
		
			
				text/html;charset=UTF-8
			
		
	

	
	
		
			
				
				
			
		
	

	
	
		
		
		
	

	
	
		
			UTF-8
		
		
			
			32505856
		
		
			4096
		
	

  自動スキャンorg.andy.shop.com ntrollerには@Controllerのコントロール層があり、beanに注入されます.
 9.2、Web容器web.xml配置
    web容器配置ローディングのプロファイルを起動し、SpringMVCブロックの要求を設定する(ここでブロックする.htmlsの最後のurl要求)



	springmvc_mybatis_demo

	
		contextConfigLocation
		classpath:spring.xml,classpath:spring-mybatis.xml
	

	
		encodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
		
			forceEncoding
			true
		
	
	
		encodingFilter
		/*
	

	
		org.springframework.web.context.ContextLoaderListener
	

	
	
		org.springframework.web.util.IntrospectorCleanupListener
	

	
		spring mvc servlet
		rest
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
				classpath:spring-mvc.xml
			
		
		1
	
	
		rest
		*.htmls
	

	
	
		30
	

	
		index.jsp
	

  9.3、制御層
    org.andy.shop.com ntrollerでUserController.javaのような制御層を作成します.
 
package org.andy.shop.controller;

import java.util.List;

import org.andy.shop.model.UserInfo;
import org.andy.shop.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**  
 *     :2015-1-28   1:17:27  
 * @author andy  
 * @version 2.2  
 */
@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserService userService;
	
	@RequestMapping("/showInfo/{userId}")
	public String showUserInfo(ModelMap modelMap, @PathVariable int userId){
		UserInfo userInfo = userService.getUserById(userId);
		modelMap.addAttribute("userInfo", userInfo);
		return "/user/showInfo";
	}
	
	@RequestMapping("/showInfos")
	public @ResponseBody Object showUserInfos(){
		List userInfos = userService.getUsers();
		return userInfos;
	}
}
9.4、ビュー層
  WEB-INFでビューの総カタログviewを作成し(セキュリティのために一般的にはWEB-INFで作成します)、user/showInfo.jspビューファイルを作成します.
 






userInfo



       : ${userInfo.uname}


 9.5、プロジェクト全体のディレクトリ構造
   ここにdemo及び基本作成のための総カタログは以下の通りです.
     
10、プロジェクトテスト
    プロジェクトをコンパイルして、Maven build…clean comple packageを入力して、Tomcatサーバーに配置して、プロジェクトをスタートします.
   テスト1:最初のurlをテストします.  http://localhost:8080/springmvc_mybatisdemo/user/show Info/1.httmls
     
   テスト2:2番目のjsonデータを返したurlをテストします.  http://localhost:8080/springmvc_mybatisdemo/user/show Infos.hmls
    
ok、データは正常に表示されています.SprigMVC+Mybatisの構築に成功しました.
クリックしてリンクを開く