之前工作中一直用springMVC和ibatis,现在要从0开始学习maven和mybatis,所以这篇博客就记录我的学习maven,mybatis,intellij IDEA的心路历程。
首先说一下IDEA,先要知道它是什么吧。所以我查看了Intellij IDEA百度百科。了解到它是java语言的集成开发环境,之前工作中我一直用的是myeclipse,所以现在要从myeclipse转型到IDEA。其实就是一个工具而已,没什么难的,多用几次就会了,就熟练了。就想当初从eclipse转型到myeclipse一样,感觉myeclipse比eclipse多好多内容,很难,现在myeclipse不也乖乖的成为了咱们手中开发的利器了嘛。所以这里idea不多做解释。
下面说说maven,因为是0基础,所以,我们首先也要看一下Maven百度百科,先知道它是一个什么东东吧。
接下来在简单说说mybatis,因为之前公司一直用ibatis,都说ibatis和mybatis差别不大,具体也没太研究过2者的细微差别,现在我们就开始搭建IDEA+maven+springMVC+mybatis的开发环境,在使用中学习他们的用法。
假设我们已经下载好了IDEA,并成功安装到本机。接下来我们创建一个Maven项目,首先new project,选择Maven,构建一个空的Maven项目,在创建Maven项目的时候,需要输入GroupId和ArtiFactId以及Version,三者简称GAV,先简单介绍一下GAV名词感念。GroupId表示项目的名称,ArtiFactId表示项目的模块名称(建议用项目名称-模块名称来表示),Version表示项目版本的名称,GAV输入(groupID:SpringMVC;ArtiFactId:SpringMVC-Demo,version:默认)完成后,IDEA就自动给我们构建了一个空的maven项目,如下图所示:
由于我们要集成SpringMVC,所以我们首先把项目的目录结构整理清楚。首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些?
(假设效果:项目目录结构清晰,能够查询到本地数据库中的内容。。)
1. 工程目录结构整理清楚
我们在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean),
cn.springmvc.dao(存放spring与mybatis连接接口),
cn.springmvc.service(service接口),
cn.springmvc.service.impl(service接口的实现),
cn.springmvc.controller(存放控制层controller)
在src/main/resource文件夹中,新建包conf(存放配置文件),
mapper(mybatis的mapper文件)
在src/test/java文件夹中,新建包cn.springmvc.test(存放测试文件)
在WEB-INF文件夹下新建jsp文件夹(存放jsp文件)
这样项目结构基本完成了,如下图所示:
查找依赖结构有个不错的网站,http://search.maven.org/ 只要输入包名即可查找引来关系
下面我们先引入springMVC包,打开http://search.maven.org/ 如下图所以:
我们选择一个版本,点击pom,如下图所示:
然后将上面这段代码copy,粘贴到pom.xml文件中,如下图所示:
然后idea会自动构建,引入springMVC所需的jar包,构建成功后,多出来了一下jar文件
接下来,我们按照同样的方法,分别导入mybatis-spring,junit,aspectjweaver,javax.servlet-api,mysql-connector-java,commons-dbcp-all,cglib,jstl。
先来解释一下这几个jar的作用是什么:
junit,就是junit包,测试用的,这个包一般在构建maven项目的时候会自动包含。
spring-webmvc包,这个包,就是SpringMVC的包。似乎里面已经基本包含了SpringMVC所需的jar包了。
mybatis-spring包是mybatis与spring结合的包,因为使用maven来构建的项目,所以会自动把mybatis相关的包也包含进来。
aspectjweaver就是面向方面(面向切面)的包,虽然SpringMVC已经实现了aop面向方面,但是SpringMVC的aop也是基于这个包,所以必须导入。
javax.servlet-api,这个servlet的api,不用说了,你懂的。
mysql-connector-java是mysql的java驱动。
commons-dbcp-all这个是连接池。
cglib就是代理的包,通常aop都是通过代理来实现的。
jstl就是jstl的包,因为项目里面,视图层用的是jstl。
在这里,所需的jar包基本已经包含。
最后借助这个网站把依赖包配置文件都copy到pom.xml中后,pom.xml的文件内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringMVC</groupId> <artifactId>SpringMVC-Demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- spring-web--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.3.RELEASE</version> <scope>compile</scope> </dependency> <!-- junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!-- mybatis-spring--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!--aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.0</version> </dependency> <!--javax.servlet-api--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <!--mysql-connector-java--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <!--commons-dbcp-all--> <dependency> <groupId>org.apache.openejb</groupId> <artifactId>commons-dbcp-all</artifactId> <version>1.3-r699049</version> </dependency> <!--cglib--> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency> <!--jstl--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> </project>
自动引入的依赖库,截图如下: