Maven下Spring-Mybatis注解式整合

本文在maven环境下整合Spring-Mybatis,其中Spring支持当下比较流行的注解注入方式,简化配置

 本文存在问题,不支持数据库事务回滚,数据库存入汉字为乱码。

一、准备工作

eclipse 4.2

maven 3.1.0 

maven安装就不介绍了,eclipse的maven插件版本为3.0.4,本地版本为3.1.0。用哪个版本的差别不大

 

二、创建Maven项目

(1)选择安装maven项目。搜索关键字maven,如下图:

Maven下Spring-Mybatis注解式整合_第1张图片
 

(2)这里默认就行了,直接下一步

Maven下Spring-Mybatis注解式整合_第2张图片
 

(3)搜索关键字webapp,选择maven-archetype-webapp点击下一步

Maven下Spring-Mybatis注解式整合_第3张图片
 

(4)填写工程的Group Id,Artifact Id。

Group Id就是大项目的id,Arifact Id就是该项目的Id,点击完成。如下图:

Maven下Spring-Mybatis注解式整合_第4张图片
 

(5)首先,完善目录,增加重要的source Folder,这个不是简单的Floder,这些文件夹是会参与编译的。增加src/main/java目录。如果创建目录时提示目录已经存在,请参考http://yudey.iteye.com/blog/1985181如下图:


Maven下Spring-Mybatis注解式整合_第5张图片

(6)在webapp下创建文件夹jsp,在WEB-INF下创建文件夹config

(7)文件目录大体如下:


Maven下Spring-Mybatis注解式整合_第6张图片
 (8)将工程变成web工程

此时,我们的工程还不是标准的web工程,可以在eclipse中增加web工程的特性,选择工程的Properties,选Project Facets,点击Convert to faceted form...  如下图:


Maven下Spring-Mybatis注解式整合_第7张图片
 
 

这里,我们选择Dynamic Web Module,版本选择2.4,这个版本比较通用,我本机为默认版本。 如下图:


Maven下Spring-Mybatis注解式整合_第8张图片
 
这样,我们的工程就完全是一个web工程了。

三、文件配置

(1)配置pom.xml,让jar包飞一会。如果pom.xml保存后,有错误提示,很可能是jar包重复,可注释掉重复的引用

文件pom.xml

 

Xml代码   收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0modelVersion>  
  4.   <groupId>testgroupId>  
  5.   <artifactId>spring_testartifactId>  
  6.   <packaging>warpackaging>  
  7.   <version>0.0.1-SNAPSHOTversion>  
  8.   <name>spring_test Maven Webappname>  
  9.   <url>http://maven.apache.orgurl>  
  10.   <properties>  
  11.         <org.springframework.version>3.0.6.RELEASEorg.springframework.version>  
  12.     properties>  
  13.     <dependencies>  
  14.           
  15.           
  16.         <dependency>  
  17.             <groupId>org.mybatisgroupId>  
  18.             <artifactId>mybatis-springartifactId>  
  19.             <version>1.2.0version>  
  20.         dependency>  
  21.   
  22.           
  23.         <dependency>  
  24.             <groupId>org.mybatisgroupId>  
  25.             <artifactId>mybatisartifactId>  
  26.             <version>3.1.1version>  
  27.         dependency>  
  28.           
  29.           
  30.         <dependency>  
  31.             <groupId>javax.servletgroupId>  
  32.             <artifactId>servlet-apiartifactId>  
  33.             <version>2.5version>  
  34.             <scope>providedscope>  
  35.         dependency>  
  36.           
  37.         <dependency>  
  38.             <groupId>mysqlgroupId>  
  39.             <artifactId>mysql-connector-javaartifactId>  
  40.             <version>5.1.26version>  
  41.         dependency>  
  42.           
  43.         <dependency>  
  44.             <groupId>commons-dbcpgroupId>  
  45.             <artifactId>commons-dbcpartifactId>  
  46.             <version>1.4version>  
  47.         dependency>  
  48.         <dependency>  
  49.             <groupId>commons-poolgroupId>  
  50.             <artifactId>commons-poolartifactId>  
  51.             <version>1.5.6version>  
  52.         dependency>  
  53.           
  54.         <dependency>  
  55.             <groupId>commons-logginggroupId>  
  56.             <artifactId>commons-logging-apiartifactId>  
  57.             <version>1.1version>  
  58.         dependency>  
  59.           
  60.         <dependency>  
  61.             <groupId>commons-iogroupId>  
  62.             <artifactId>commons-ioartifactId>  
  63.             <version>2.4version>  
  64.         dependency>  
  65.           
  66.         <dependency>  
  67.             <groupId>commons-fileuploadgroupId>  
  68.             <artifactId>commons-fileuploadartifactId>  
  69.             <version>1.3version>  
  70.         dependency>  
  71.           
  72.         <dependency>  
  73.             <groupId>log4jgroupId>  
  74.             <artifactId>log4jartifactId>  
  75.             <version>1.2.17version>  
  76.         dependency>  
  77.   
  78.           
  79.         <dependency>  
  80.             <groupId>dom4jgroupId>  
  81.             <artifactId>dom4jartifactId>  
  82.             <version>1.6.1version>  
  83.         dependency>  
  84.           
  85.         <dependency>  
  86.             <groupId>org.aspectjgroupId>  
  87.             <artifactId>aspectjweaverartifactId>  
  88.             <version>1.7.3version>  
  89.         dependency>  
  90.         <dependency>  
  91.             <groupId>aopalliancegroupId>  
  92.             <artifactId>aopallianceartifactId>  
  93.             <version>1.0version>  
  94.         dependency>  
  95.         <dependency>  
  96.             <groupId>cglibgroupId>  
  97.             <artifactId>cglib-nodepartifactId>  
  98.             <version>2.2version>  
  99.         dependency>  
  100.           
  101.         <dependency>  
  102.             <groupId>net.sf.json-libgroupId>  
  103.             <artifactId>json-libartifactId>  
  104.             <version>2.4version>  
  105.             <type>pomtype>  
  106.         dependency>  
  107.           
  108.         <dependency>  
  109.             <groupId>junitgroupId>  
  110.             <artifactId>junitartifactId>  
  111.             <version>3.8.1version>  
  112.             <scope>testscope>  
  113.         dependency>  
  114.   
  115.           
  116.         <dependency>  
  117.             <groupId>javax.annotationgroupId>  
  118.             <artifactId>javax.annotation-apiartifactId>  
  119.             <version>1.2version>  
  120.         dependency>  
  121.     dependencies>  
  122.   <build>  
  123.     <finalName>spring_testfinalName>  
  124.   build>  
  125. project>  

文件web.xml  路径:WEB-INF下

Xml代码   收藏代码
  1. >  
  2.   
  3. <web-app>  
  4.   <display-name>Archetype Created Web Applicationdisplay-name>  
  5.     
  6.     
  7.   <context-param>  
  8.     <param-name>contextConfigLocationparam-name>  
  9.     <param-value>/WEB-INF/config/app-context.xmlparam-value>  
  10.   context-param>  
  11.     
  12.     
  13.   <filter>  
  14.     <filter-name>characterEncodingFilterfilter-name>  
  15.     <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>  
  16.     <init-param>  
  17.           
  18.         <param-name>encodingparam-name>  
  19.         <param-value>UTF-8param-value>  
  20.     init-param>  
  21.     <init-param>  
  22.         <param-name>forceEncodingparam-name>  
  23.         <param-value>trueparam-value>  
  24.     init-param>  
  25.   filter>  
  26.   <filter-mapping>  
  27.     <filter-name>characterEncodingFilterfilter-name>  
  28.     <url-pattern>/*url-pattern>  
  29.   filter-mapping>  
  30.     
  31.     
  32.   <listener>  
  33.     <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>  
  34.   listener>  
  35.     
  36.   <servlet>  
  37.       <servlet-name>examservlet-name>  
  38.       <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>  
  39.       <init-param>  
  40.       <param-name>contextConfigLocationparam-name>  
  41.         
  42.         <param-value>/WEB-INF/config/spring-servlet.xmlparam-value>  
  43.       init-param>  
  44.   servlet>  
  45.   <servlet-mapping>  
  46.       <servlet-name>examservlet-name>  
  47.       <url-pattern>/url-pattern>  
  48.   servlet-mapping>  
  49.     
  50.     
  51.   <welcome-file-list>  
  52.       <welcome-file>index.jspwelcome-file>  
  53.   welcome-file-list>  
  54. web-app>  

 

 文件app-context.xml 路径:WEB-INF/config下

Java代码   收藏代码
  1. "1.0" encoding="UTF-8"?>  
  2. "http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  6.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  7.            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  10.     
  11.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  12.           
  13.           
  14.         "locations" value="/WEB-INF/config/jdbc.properties" />  
  15.       
  16.       
  17.       
  18.     "dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  19.         destroy-method="close">  
  20.         "driverClassName" value="${jdbc.driver}" />  
  21.         "url" value="${jdbc.url}" />  
  22.         "username" value="${jdbc.user}" />  
  23.         "password" value="${jdbc.password}" />  
  24.           
  25.         "initialSize" value="60" />  
  26.         "maxActive" value="100" />  
  27.         "maxIdle" value="50" />  
  28.         "minIdle" value="10" />  
  29.       
  30.       
  31.       
  32.     "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  33.        "dataSource" ref="dataSource" />  
  34.       
  35.       
  36.       
  37.     class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  38.         "basePackage" value="com.mxy.mapper" />  
  39.       
  40.   

 

文件spring-servlet.xml  路径:WEB-INF/config下

Java代码   收藏代码
  1. "1.0" encoding="UTF-8"?>  
  2.   
  3. "http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"  
  6.     xmlns:util="http://www.springframework.org/schema/util"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    
  8.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd    
  9.             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd                
  10.             http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">  
  11.       
  12.       
  13.       
  14.       
  15.       
  16.     package="com.mxy" />  
  17.       
  18.       
  19.     class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  20.   
  21.       
  22.     "viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  23.         "prefix">  
  24.             /jsp/  
  25.           
  26.         "suffix">  
  27.             .jsp  
  28.           
  29.       
  30.   

文件jdbc.properties   路径:WEB-INF/config下

Java代码   收藏代码
  1. jdbc.driver=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://localhost:3306/shop  
  3. jdbc.user=test  
  4. jdbc.password=123456  

 文件test.sql,这个文件直接在数据库下执行即可

Sql代码   收藏代码
  1. SET FOREIGN_KEY_CHECKS=0;  
  2. drop database if exists test;  
  3. create database test;  
  4. use test;  
  5.   
  6. -- ----------------------------  
  7. -- Table structure for `account`  
  8. -- ----------------------------  
  9. DROP TABLE IF EXISTS `account`;  
  10. CREATE TABLE `account` (  
  11.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  12.   `userName` varchar(100) DEFAULT NULL,  
  13.   `passwordvarchar(100) DEFAULT NULL,  
  14.   `email` varchar(100) DEFAULT NULL,  
  15.   PRIMARY KEY (`id`)  
  16. ) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8;  

文件TestController.java 路径:com.mxy.controller

Java代码   收藏代码
  1. package com.mxy.controller;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.annotation.Resource;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.servlet.ModelAndView;  
  13.   
  14. import com.mxy.model.User;  
  15. import com.mxy.service.TestService;  
  16.   
  17. @Controller  
  18. @RequestMapping("/testc")  
  19. public class TestController {  
  20.   
  21.     @Resource  
  22.     private TestService accountService;  
  23.   
  24.     @RequestMapping("/test")  
  25.     public ModelAndView test(HttpServletRequest request,  
  26.             HttpServletResponse response) {  
  27.         Map resultMap = new HashMap();  
  28.         String userName = request.getParameter("username");  
  29.   
  30.         String password = request.getParameter("password");  
  31.         String email = request.getParameter("email");  
  32.   
  33.         User entity = new User();  
  34.         entity.setUserName(userName);  
  35.         entity.setPassword(password);  
  36.         entity.setEmail(email);  
  37.         User user = accountService.select(entity);  
  38.         if (user != null) {  
  39.             return new ModelAndView("error", resultMap);  
  40.         }  
  41.   
  42.         accountService.insert(entity);  
  43.   
  44.         resultMap.put("user", entity);  
  45.         return new ModelAndView("success", resultMap);  
  46.     }  
  47. }  

 文件TestMapper.java 路径:com.mxy.mapper

Java代码   收藏代码
  1. package com.mxy.mapper;  
  2.   
  3. import org.springframework.transaction.annotation.Transactional;  
  4.   
  5. import com.mxy.model.User;  
  6.   
  7. @Transactional  
  8. public interface TestMapper {  
  9.       
  10.     public Integer insert(User entity);  
  11.   
  12.     public User select(User entity);  
  13. }  

 文件TestMapper.xml 路径:com.mxy.mapper

Java代码   收藏代码
  1. "1.0" encoding="UTF-8" ?>  
  2.   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  3.   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4. "com.mxy.mapper.TestMapper">  
  5.   
  6. "account_Result"  type="com.mxy.model.User">  
  7.     "id" column="id" jdbcType="DECIMAL"/>  
  8.     "username" column="userName" jdbcType="VARCHAR"/>  
  9.     "password" column="password" jdbcType="VARCHAR"/>  
  10.     "email" column="email" jdbcType="DECIMAL"/>  
  11.   
  12.       
  13. "insert" parameterType="com.mxy.model.User">  
  14.     insert into account(userName,password,email) values(#{userName},#{password},#{email})  
  15.   
  16.   
  17. "select" parameterType="com.mxy.model.User" resultType="com.mxy.model.User">  
  18.     select * from account where userName=#{userName}  
  19.   
  20.      
  21.   

 文件User.java 路径:com.mxy.model

Java代码   收藏代码
  1. package com.mxy.model;  
  2.   
  3. public class User {  
  4.     private int id;  
  5.     private String userName;  
  6.     private String password;  
  7.     private String email;  
  8.   
  9.     public int getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.     public void setId(int id) {  
  14.         this.id = id;  
  15.     }  
  16.   
  17.     public String getUserName() {  
  18.         return userName;  
  19.     }  
  20.   
  21.     public void setUserName(String userName) {  
  22.         this.userName = userName;  
  23.     }  
  24.   
  25.     public String getPassword() {  
  26.         return password;  
  27.     }  
  28.   
  29.     public void setPassword(String password) {  
  30.         this.password = password;  
  31.     }  
  32.   
  33.     public String getEmail() {  
  34.         return email;  
  35.     }  
  36.   
  37.     public void setEmail(String email) {  
  38.         this.email = email;  
  39.     }  
  40.   
  41. }  

 文件TestService.java 路径:com.mxy.service

Java代码   收藏代码
  1. package com.mxy.service;  
  2.   
  3. import com.mxy.model.User;  
  4.   
  5. public interface TestService{  
  6.   
  7.     public Integer insert(User entity);  
  8.   
  9.     public User select(User entity);  
  10. }  

 文件TestServiceImpl.java 路径:com.mxy.service.impl

Java代码   收藏代码
  1. package com.mxy.service.impl;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Service;  
  6.   
  7. import com.mxy.mapper.TestMapper;  
  8. import com.mxy.model.User;  
  9. import com.mxy.service.TestService;  
  10.   
  11. @Service  
  12. public class TestServiceImpl implements TestService {  
  13.       
  14.     @Resource  
  15.     private TestMapper accountMapper;  
  16.   
  17.     public Integer insert(User entity) {  
  18.         // TODO Auto-generated method stub  
  19.         return accountMapper.insert(entity);  
  20.     }  
  21.   
  22.     public User select(User entity) {  
  23.         // TODO Auto-generated method stub  
  24.         return accountMapper.select(entity);  
  25.     }  
  26. }  

文件index.jsp   路径:webapp下

Java代码   收藏代码
  1.   
  2.   
  3. <%  
  4.   request.getRequestDispatcher("/jsp/add.jsp").forward(request,response);  
  5. %>  
  6.   
  7.   

文件error.jsp   路径:webapp/jsp下

Java代码   收藏代码
  1. <%@ page isELIgnored="false"%>   
  2. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
  3. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4.   
  5.   
  6. "Content-Type" content="text/html; charset=utf-8">  
  7. Insert title here  
  8.   
  9.   
  10. 用户已经存在,"/spring_test">返回  
  11.   
  12.   

文件add.jsp    路径:webapp/jsp下

Java代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4.   
  5.   
  6. "Content-Type" content="text/html; charset=utf-8">  
  7. Insert title here  
  8.   
  9.   
  10.     
      
  11.         "testc/test" method="post">  
  12.             

    用户名:"text" name="username">

      
  13.             

    密码:"password" name="password">

      
  14.             

    邮箱:"text" name="email">

      
  15.             

    "submit" value="添加用户">

      
  16.           
  17.     
  
  •   
  •   
  • 文件success.jsp    路径:webapp/jsp下

    Java代码   收藏代码
    1. <%@ page isELIgnored="false"%>   
    2. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
    3. "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4.   
    5.   
    6. "Content-Type" content="text/html; charset=utf-8">  
    7. Insert title here  
    8.   
    9.   
    10. 恭喜,添加成功!  
    11. 用户名:${user.userName}  
    12. 密码:${user.password}  
    13. 邮箱:${user.email}  
    14. 邮箱:${userName}  
    15. "/spring_test">返回  
    16.   
    17.   

     

     

    发布后访问本地地址 http://localhost:8080/spring_test  如

     
    Maven下Spring-Mybatis注解式整合_第9张图片
     

     KO。。。。

     

    上面我们提到插入到数据库是乱码,我们可以根据这篇文章解决:http://blog.csdn.net/zht666/article/details/8955952

     

     

    你可能感兴趣的:(综合)