IDEA搭建Spring+SpringMVC+mybatis框架教程

来源:互联网 发布:做流程图的软件 编辑:程序博客网 时间:2024/06/05 10:12

IDEA搭建Spring+SpringMVC+mybatis框架教程

IDEA版本:IDEA 2017.2.5
JDK版本:JDK1.8
测试数据库表sql自取如下:

SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (  `id` varchar(10) NOT NULL,  `name` varchar(20) default NULL,  `sex` varchar(5) default NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', '张三', '男');INSERT INTO `user` VALUES ('2', '张三2', '女');INSERT INTO `user` VALUES ('3', '张三3', '男');INSERT INTO `user` VALUES ('4', '张三4', '男');INSERT INTO `user` VALUES ('5', '张三5', '男');INSERT INTO `user` VALUES ('6', '张三6', '男');INSERT INTO `user` VALUES ('7', '张三7', '男');INSERT INTO `user` VALUES ('8', '张三8', '男');

废话不多说,直入正题。
步骤
一:创建Maven webapp项目
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

把项目文件建起来,如图所示(注意,test目录和main平级),并对文件夹进行标识让IDEA系统系别。
这里写图片描述

二:配置文件内容
pom.xml文件

<?xml version="1.0" encoding="UTF-8"?><!--  Licensed to the Apache Software Foundation (ASF) under one  or more contributor license agreements.  See the NOTICE file  distributed with this work for additional information  regarding copyright ownership.  The ASF licenses this file  to you under the Apache License, Version 2.0 (the  "License"); you may not use this file except in compliance  with the License.  You may obtain a copy of the License at   http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing,  software distributed under the License is distributed on an  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  KIND, either express or implied.  See the License for the  specific language governing permissions and limitations  under the License.--><!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">    <parent>        <artifactId>space</artifactId>        <groupId>testSSM</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <packaging>war</packaging>    <name>kaka</name>    <groupId>com.kaka</groupId>    <artifactId>kaka</artifactId>    <build>        <plugins>            <plugin>                <groupId>org.mortbay.jetty</groupId>                <artifactId>maven-jetty-plugin</artifactId>                <version>6.1.7</version>                <configuration>                    <connectors>                        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">                            <port>8888</port>                            <maxIdleTime>30000</maxIdleTime>                        </connector>                    </connectors>                    <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}                    </webAppSourceDirectory>                    <contextPath>/</contextPath>                </configuration>            </plugin>            <!--mybatis逆向工程插件-->            <plugin>                <groupId>org.mybatis.generator</groupId>                <artifactId>mybatis-generator-maven-plugin</artifactId>                <version>1.3.2</version>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <!-- 设置JDK版本 -->                    <source>1.8</source>                    <target>1.8</target>                </configuration>            </plugin>        </plugins>        <finalName>kaka</finalName>        <!--若不配置,可能会发送打包不全-->        <resources>            <resource>                <!--需要打包的目录-->                <directory>src/main/java</directory>                <!--目录中的文件类型-->                <includes>                    <include>**/*.xml</include>                    <include>**/*.properties</include>                </includes>            </resource>            <resource>                <!--需要打包的目录-->                <directory>src/main/resources</directory>                <!--目录中的文件类型-->                <includes>                    <include>**/*.xml</include>                    <include>**/*.properties</include>                </includes>            </resource>        </resources>    </build>    <properties>        <!-- 设置项目编码编码 -->        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <!-- spring版本号 -->        <spring.version>4.3.5.RELEASE</spring.version>        <!-- mybatis版本号 -->        <mybatis.version>3.4.1</mybatis.version>    </properties>    <dependencies>        <!-- java ee -->        <dependency>            <groupId>javax</groupId>            <artifactId>javaee-api</artifactId>            <version>7.0</version>        </dependency>        <!-- 单元测试 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>        </dependency>        <!-- 实现slf4j接口并整合 -->        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-classic</artifactId>            <version>1.2.2</version>        </dependency>        <!-- JSON -->        <dependency>            <groupId>com.fasterxml.jackson.core</groupId>            <artifactId>jackson-databind</artifactId>            <version>2.8.7</version>        </dependency>        <!-- 数据库 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.41</version>            <scope>runtime</scope>        </dependency>        <!-- 数据库连接池 -->        <dependency>            <groupId>com.mchange</groupId>            <artifactId>c3p0</artifactId>            <version>0.9.5.2</version>        </dependency>        <!-- MyBatis -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>${mybatis.version}</version>        </dependency>        <!-- mybatis/spring整合包 -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis-spring</artifactId>            <version>1.3.1</version>        </dependency>        <!-- Spring -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-tx</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring.version}</version>        </dependency>    </dependencies></project>

logback.xml(用log4j也行哦~),自行配置输出

<?xml version="1.0" encoding="UTF-8"?><configuration debug="true">    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>        </encoder>    </appender>    <root level="INFO">        <appender-ref ref="STDOUT"/>    </root></configuration>

jdbc.properties

jdbc.driverLocation=D:\\mavenRep\\repository\\mysql\\mysql-connector-java\\5.1.29\\mysql-connector-java-5.1.29.jarjdbc.driverClasss=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/kaka?useUnicode=true&characterEncoding=UTF-8#username直接声明会与系统jvm冲突,不信你试试~jdbc.username=xxxjdbc.password=xxx

开启mybatis逆向工程,生成dao(即mapper)和model(即po)
先写逆向工程配置文件generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>    <!--导入属性配置-->    <properties resource="jdbc.properties"></properties>    <!--指定特定数据库的jdbc驱动jar包的位置-->    <classPathEntry location="${jdbc.driverLocation}"/>    <context id="default" targetRuntime="MyBatis3">        <!-- optional,旨在创建class时,对注释进行控制 -->        <commentGenerator>            <property name="suppressDate" value="true"/>            <property name="suppressAllComments" value="true"/>        </commentGenerator>        <!--jdbc的数据库连接 -->        <jdbcConnection                driverClass="${jdbc.driverClasss}"                connectionURL="${jdbc.url}"                userId="${jdbc.username}"                password="${jdbc.password}">        </jdbcConnection>        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->        <javaTypeResolver>            <property name="forceBigDecimals" value="false"/>        </javaTypeResolver>        <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类            targetPackage     指定生成的model生成所在的包名            targetProject     指定在该项目下所在的路径        -->        <javaModelGenerator targetPackage="com.kaka.model"                            targetProject="src/main/java">            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->            <property name="enableSubPackages" value="false"/>            <!-- 是否对model添加 构造函数 -->            <property name="constructorBased" value="true"/>            <!-- 是否对类CHAR类型的列的数据进行trim操作 -->            <property name="trimStrings" value="true"/>            <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->            <property name="immutable" value="false"/>        </javaModelGenerator>        <!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 -->        <sqlMapGenerator targetPackage="com.kaka.dao"                         targetProject="src/main/java">            <property name="enableSubPackages" value="false"/>        </sqlMapGenerator>        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码                type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象                type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象                type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口        -->        <javaClientGenerator targetPackage="com.kaka.dao"                             targetProject="src/main/java" type="XMLMAPPER">            <property name="enableSubPackages" value="true"/>        </javaClientGenerator>        <table tableName="user"></table>    </context></generatorConfiguration>

Run/Debug Configuration注册maven运行项
这里写图片描述

点击右边的绿色箭头启动。
成功之后如下:
这里写图片描述

spring-mybatis.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:tx="http://www.springframework.org/schema/tx"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/tx       http://www.springframework.org/schema/tx/spring-tx.xsd">    <!-- 扫描service包下所有使用注解的类型 -->    <context:component-scan base-package="com.kaka.service"/>    <!-- 配置数据库相关参数properties的属性:${url} -->    <context:property-placeholder location="classpath*:jdbc.properties"/>    <!-- 数据库连接池 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="driverClass" value="${jdbc.driverClasss}"/>        <property name="jdbcUrl" value="${jdbc.url}"/>        <property name="user" value="${jdbc.username}"/>        <property name="password" value="${jdbc.password}"/>    </bean>    <!-- 配置SqlSessionFactory对象 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource"/>        <!-- 扫描model包 使用别名 -->        <property name="mapperLocations" value="classpath:com/kaka/dao/*.xml" />    </bean>    <!-- 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 给出需要扫描Dao接口包 -->        <property name="basePackage" value="com.kaka.dao"/>        <!-- 注入sqlSessionFactory -->        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>    </bean>    <!-- 配置事务管理器 -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource"/>    </bean>    <!-- 配置基于注解的声明式事务 -->    <tx:annotation-driven transaction-manager="transactionManager"/></beans>

spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">    <!-- 扫描web相关的bean -->    <context:component-scan base-package="com.kaka.controller"/>    <!-- 开启SpringMVC注解模式 -->    <mvc:annotation-driven/>    <!-- 静态资源默认servlet配置 -->    <mvc:default-servlet-handler/>    <!-- 配置jsp 显示ViewResolver -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>        <property name="prefix" value="/WEB-INF/jsp/"/>        <property name="suffix" value=".jsp"/>    </bean></beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">  <display-name>kaka</display-name>  <description>kaka_Alpha_0.0.1</description>  <!-- 编码过滤器 -->  <filter>    <filter-name>encodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>      <param-name>encoding</param-name>      <param-value>UTF-8</param-value>    </init-param>  </filter>  <filter-mapping>    <filter-name>encodingFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 配置DispatcherServlet -->  <servlet>    <servlet-name>SpringMVC</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <!-- 配置springMVC需要加载的配置文件-->    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:spring-*.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>    <async-supported>true</async-supported>  </servlet>  <servlet-mapping>    <servlet-name>SpringMVC</servlet-name>    <!-- 匹配*.do所有请求-->    <url-pattern>*.do</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

三:临时测试一下数据访问能否成功
创建如下目录中的UserMapperTest.java文件
这里写图片描述

测试成功(要是没成功,自己找找问题~):
这里写图片描述

四:接下来可以进行web的开发咯~
首先,测试index.jsp
在webapp文件下创建index.jsp文件

<%--  Created by IntelliJ IDEA.  User: Administrator  Date: 2017/11/11 0011  Time: 20:59  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>测试标题</title></head><body>欢迎大家访问!</body></html>

然后点击右上角的Edit Configuration…然后点击“+”号
这里写图片描述

创建tomcat,并部署(如下图所示,记得给汤姆猫起个名字哦)
这里写图片描述

这里写图片描述

这里写图片描述

然后切换到server选项卡进行如下设置
这里写图片描述

来来来!!!启动了!!!
启动成功
这里写图片描述

看到了!成功访问了index.jsp,很激动!!!有木有!!!
这里写图片描述

最后,我们创建Controller和Service进行最后的冲刺!
UserService.java

package com.kaka.service;import com.kaka.dao.UserMapper;import com.kaka.model.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class UserService {    @Autowired    private UserMapper userMapper;    public User getUserById(String id){        return userMapper.selectByPrimaryKey(id);    }}

UserController.java

package com.kaka.controller;import com.kaka.model.User;import com.kaka.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controller@RequestMapping("user")public class UserController {    @Autowired    private UserService userService;    @RequestMapping("getUser")    public ModelAndView getUser(String id){        ModelAndView modelAndView = new ModelAndView();        User user = userService.getUserById(id);        modelAndView.addObject("user",user);        modelAndView.setViewName("user/getUser");        return modelAndView;    }}

赶紧在WEB-INF下面的jsp文件夹下面创建如下文件
这里写图片描述

getUser.jsp

<%--  Created by IntelliJ IDEA.  User: Administrator  Date: 2017/11/11 0011  Time: 21:15  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>测试getUser</title></head><body>    ${user.id},${user.name},${user.sex}</body></html>

开始秋天的收获!!!
汤姆猫,该工作了!
这里写图片描述

Success!
bye~~

阅读全文
10 0