• 基于Maven构建整合SpringMVC+Mybtis+Druid


    前几天趁空闲时间整合了下SpringMVC+Mybatis+Druid,这里小记录下,这个Demo是基于Maven构建的,数据源用的是阿里巴巴温少的开源项目Druid,数据库用的是Mysql。

    由于Eclipse去安装Maven很不方便,也老出错,这里我使用的是Spring Tool Suite(STS,基于 Spring IDE ,提供了其它的一些特性,如 基于 Spring dm Server 的osgi 开发,及其它一些 Spring 项目的支持,如 Spring Roo , Spring Batch 等)。

    这里是STS的下载地址(集成了Maven):http://spring.io/tools/sts/all

    先看一下整体的项目结构:

      

    一、相关JAR包

    由于是基于Maven的项目,找起JAR包自然就方便了许多,我们只需要知道JAR的名字或者其中关键字就可以很轻松的把JAR包以及依赖JAR下载下来,需要多少下多少。

    这里给出pom的配置文件。

    pom.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.0</modelVersion>
     4     <groupId>SpringMybatis</groupId>
     5     <artifactId>SpringMybatis</artifactId>
     6     <packaging>war</packaging>
     7     <version>0.0.1-SNAPSHOT</version>
     8     <name>SpringMybatis Maven Webapp</name>
     9     <url>http://maven.apache.org</url>
    10     <dependencies>
    11         <dependency>
    12             <groupId>org.springframework</groupId>
    13             <artifactId>spring-core</artifactId>
    14             <version>3.2.10.RELEASE</version>
    15         </dependency>
    16         <dependency>
    17             <groupId>org.springframework</groupId>
    18             <artifactId>spring-web</artifactId>
    19             <version>3.2.10.RELEASE</version>
    20         </dependency>
    21         <dependency>
    22             <groupId>org.springframework</groupId>
    23             <artifactId>spring-webmvc</artifactId>
    24             <version>3.2.10.RELEASE</version>
    25         </dependency>
    26         <dependency>
    27             <groupId>org.mybatis</groupId>
    28             <artifactId>mybatis</artifactId>
    29             <version>3.2.8</version>
    30         </dependency>
    31         <dependency>
    32             <groupId>org.mybatis</groupId>
    33             <artifactId>mybatis-spring</artifactId>
    34             <version>1.1.1</version>
    35         </dependency>
    36         <dependency>
    37             <groupId>mysql</groupId>
    38             <artifactId>mysql-connector-java</artifactId>
    39             <version>5.0.2</version>
    40         </dependency>
    41         <dependency>
    42             <groupId>junit</groupId>
    43             <artifactId>junit</artifactId>
    44             <version>4.12</version>
    45             <scope>test</scope>
    46         </dependency>
    47         <dependency>
    48             <groupId>com.alibaba</groupId>
    49             <artifactId>druid</artifactId>
    50             <version>1.0.11</version>
    51         </dependency>
    52         <dependency>
    53             <groupId>log4j</groupId>
    54             <artifactId>log4j</artifactId>
    55             <version>1.2.17</version>
    56         </dependency>
    57     </dependencies>
    58     <build>
    59         <finalName>SpringMybatis</finalName>
    60     </build>
    61 </project>

    由于Maven会把JAR包所依赖的JAR包也一起下载下来,这里我们就不需要逐个去写Spring的相关JAR包。

    这里用到了阿里巴巴温少的开源项目Druid的数据源,所以额外的多引入了一个Druid的JAR包。

    关于JAR的扩展,如果有需要别的可以到:http://search.maven.org/ 去查找,然后复制到这个配置文件即可,Maven会帮我们自动下载添加。

    二、相关配置

    spring.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="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.xsd
     7     http://www.springframework.org/schema/context
     8     http://www.springframework.org/schema/context/spring-context.xsd
     9     http://www.springframework.org/schema/aop
    10     http://www.springframework.org/schema/aop/spring-aop.xsd
    11     http://www.springframework.org/schema/tx 
    12     http://www.springframework.org/schema/tx/spring-tx.xsd">
    13 
    14     <!-- 自动注入 -->
    15     <context:component-scan base-package="lcw/service"/>
    16 
    17 
    18 </beans>

    mybatis-spring.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="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.xsd
     7     http://www.springframework.org/schema/context
     8     http://www.springframework.org/schema/context/spring-context.xsd
     9     http://www.springframework.org/schema/aop
    10     http://www.springframework.org/schema/aop/spring-aop.xsd
    11     http://www.springframework.org/schema/tx 
    12     http://www.springframework.org/schema/tx/spring-tx.xsd">
    13 
    14     <!-- 配置数据源 -->
    15     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    16         <property name="url" value="jdbc:mysql:///test"></property>
    17         <property name="username" value="root"></property>
    18         <property name="password" value="root"></property>
    19     </bean>
    20     
    21     
    22     <!-- Mybatis文件 -->
    23     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    24         <property name="dataSource" ref="dataSource"></property>
    25         <property name="mapperLocations"  value="classpath:lcw/mapping/*.xml"></property>
    26     </bean>
    27     
    28     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    29         <property name="basePackage" value="lcw.dao"></property>
    30         <property name="sqlSessionFactoryBeanName" value    ="sqlSessionFactory"></property>
    31     </bean>
    32 
    33 
    34     <!-- 事务管理器 -->
    35     <bean id="transactionManager"
    36         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    37         <property name="dataSource" ref="dataSource"></property>
    38     </bean>
    39 
    40     <tx:annotation-driven transaction-manager="transactionManager" />
    41 
    42 </beans>

    springmvc.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:mvc="http://www.springframework.org/schema/mvc"
     6     xsi:schemaLocation="  
     7     http://www.springframework.org/schema/beans   
     8     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
     9     http://www.springframework.org/schema/context  
    10     http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    11     http://www.springframework.org/schema/mvc  
    12     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
    13     ">
    14 
    15     <!-- 启用spring mvc 注解 -->
    16     <context:annotation-config />
    17 
    18     <!-- 设置使用注解的类所在的jar包 -->
    19     <context:component-scan base-package="lcw.controller"></context:component-scan>
    20 
    21     <!-- 完成请求和注解POJO的映射 -->
    22     <bean
    23         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    24 
    25     <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
    26     <bean
    27         class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    28         p:prefix="/" p:suffix=".jsp" />
    29 
    30 
    31 </beans>

    log4j.properties

     1 #
     2 #    Copyright 2009-2012 the original author or authors.
     3 #
     4 #    Licensed under the Apache License, Version 2.0 (the "License");
     5 #    you may not use this file except in compliance with the License.
     6 #    You may obtain a copy of the License at
     7 #
     8 #       http://www.apache.org/licenses/LICENSE-2.0
     9 #
    10 #    Unless required by applicable law or agreed to in writing, software
    11 #    distributed under the License is distributed on an "AS IS" BASIS,
    12 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13 #    See the License for the specific language governing permissions and
    14 #    limitations under the License.
    15 #
    16 
    17 ### Global logging configuration
    18 log4j.rootLogger=DEBUG, stdout
    19 
    20 ### Uncomment for MyBatis logging
    21 log4j.logger.org.apache.ibatis=DEBUG
    22 
    23 ### Console output...
    24 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    25 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    26 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    三、项目演示

       

    关于model、dao以及mapping的生成方式,在之前的文章《使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件》有提到,这里就不再给出。

    UserController.java

     1 package lcw.controller;
     2 
     3 import lcw.model.User;
     4 import lcw.service.UserServiceI;
     5 
     6 import org.springframework.beans.factory.annotation.Autowired;
     7 import org.springframework.stereotype.Controller;
     8 import org.springframework.ui.Model;
     9 import org.springframework.web.bind.annotation.RequestMapping;
    10 @Controller
    11 @RequestMapping("/userController")
    12 public class UserController {
    13     
    14     private UserServiceI userService;
    15     
    16     public UserServiceI getUserService() {
    17         return userService;
    18     }
    19     @Autowired
    20     public void setUserService(UserServiceI userService) {
    21         this.userService = userService;
    22     }
    23 
    24     @RequestMapping("/showUser")
    25     public String showUser(Model model){
    26         User user=userService.getUserById(1);
    27         model.addAttribute("user", user);
    28         return "showuser";
    29     }
    30 
    31 }

    UserServiceI.java

    1 package lcw.service;
    2 
    3 import lcw.model.User;
    4 
    5 public interface UserServiceI {
    6     
    7     public User  getUserById(int id);
    8 
    9 }

    UserService.java

    package lcw.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import lcw.dao.UserMapper;
    import lcw.model.User;
    
    @Service("userService")
    public class UserService implements UserServiceI {
    
        private UserMapper userMapper;
        
        public UserMapper getUserMapper() {
            return userMapper;
        }
    
        @Autowired
        public void setUserMapper(UserMapper userMapper) {
            this.userMapper = userMapper;
        }
    
    
    
    
        @Override
        public User getUserById(int id) {
            return userMapper.selectByPrimaryKey(id);
            
        }
    
    }

    showuser.jsp

     1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
     2     pageEncoding="ISO-8859-1"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10     Hello ${user.password} !!
    11 </body>
    12 </html>

    web.xml

     1 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     4     id="WebApp_ID" version="2.5">
     5 
     6 
     7     <!-- 解决工程编码过滤器 -->
     8     <filter>
     9         <filter-name>characterEncodingFilter</filter-name>
    10         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    11         <init-param>
    12             <param-name>encoding</param-name>
    13             <param-value>UTF-8</param-value>
    14         </init-param>
    15     </filter>
    16     <filter-mapping>
    17         <filter-name>characterEncodingFilter</filter-name>
    18         <url-pattern>/*</url-pattern>
    19     </filter-mapping>
    20 
    21     <!-- SpringMVC配置 -->
    22     <servlet>
    23         <servlet-name>springDispatcherServlet</servlet-name>
    24         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    25         <init-param>
    26             <param-name>contextConfigLocation</param-name>
    27             <param-value>classpath:springmvc.xml</param-value>
    28         </init-param>
    29         <load-on-startup>1</load-on-startup>
    30     </servlet>
    31 
    32     <servlet-mapping>
    33         <servlet-name>springDispatcherServlet</servlet-name>
    34         <url-pattern>/</url-pattern>
    35     </servlet-mapping>
    36 
    37 
    38     <!-- 配置文件所在位置 -->
    39     <context-param>
    40         <param-name>contextConfigLocation</param-name>
    41         <param-value>classpath:spring.xml,classpath:mybatis-spring.xml</param-value>
    42     </context-param>
    43     <!-- Spring配置(监听器) -->
    44     <listener>
    45         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    46     </listener>
    47 
    48 
    49 
    50 
    51 
    52 </web-app>

    看下效果图:

    好了,SpringMVC+Mybtis+Druid完美整合~

    作者:Balla_兔子
    出处:http://www.cnblogs.com/lichenwei/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有“推荐”二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!

  • 相关阅读:
    山寨 《寻找房祖名》
    css3 弹性效果上下翻转demo
    CSS3 Hover 动画特效
    判断一个字符串通过变化字符的位置,是否可以组成回文
    获取多个字符串中的共同字符
    转换为回文的步数
    IOS中图片的一些处理方法
    python django的一点笔记
    一个图片切割的例子
    一个批量修改文件夹中文件名的命令
  • 原文地址:https://www.cnblogs.com/lichenwei/p/4148716.html
Copyright © 2020-2023  润新知