众所周知,eclipse在java开发IDE中占有很大的比重,因此从大学起直到现在工作也都一直使用的是eclipse作为开发工具。2019年初,在工作中开始接触到IDEA这个久闻大名的开发神器,一入手便爱上了它。刚从eclipse阵营转移过来,IDEA的相关操作还不甚熟悉,因此在这里创建一个spring整合mybatis的demo,并将相关操作记录此文,便于日后查阅及分享。
一、创建项目
打开IDEA首先会看到如下的界面:
点击Create New Project创建我们在IDEA的第一个项目。接下来会出现如下的界面,要我们选择创建何种项目。
目前我们都流行使用Maven来对项目进行管理,因此这里我们勾选Create from archetype,并在下面选择maven-archetype-webapp这个maven提供的骨架原型来创建项目。点击Next。
在如下界面中,我们需要配置当前项目的POM属性。
点击Next,开始选择本地的maven配置。
注意:如果是第一次使用maven,那么请一定要在maven的settings.xml文件中,加入如下的配置,将中央仓库配置为国内的仓库(这里采用的是阿里的仓库),否则除非使用科学上网的方式,要不然下载及构建项目时将会非常非常的慢。
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
点击Next,在如下界面中填写该项目的名称及存储路径,
点击Finish即可完成项目的创建,稍等片刻IDEA的主界面将呈现在面前。
主界面打开后,IDEA会自动将maven项目构建,控制台输出BUILD SUCCESS时即表明当前的maven项目已经创建及构建成功。在右下角会出现Maven project need to be import,点击Enable auto-import,让其自动导入即可。
二、IDEA项目结构与Eclipse项目结构对比
Eclipse项目结构
IDEA项目结构
由于都是Maven项目,所以对比来看,两者主要的目录结构类似,只不过是不同IDE存在一些独有的文件及目录。
从上两幅图中可以看出,两个IDE创建的项目结构都不算太完整,在src下缺失了src/main/java,src/main/resources,src/test/java,src/test/resources,这个我们手动补齐即可。在IDEA中,当我们手动补齐这四个目录后,还需要进行一步设置,将他们分别标识为源代码根目录,资源根目录,及测试资源根目录。具体设置如下,点击File->Project Structure,按照下图设置即可。
三、spring整合mybatis
步骤一:
将spring及mybatis相关依赖引入项目。在pom.xml中添加如下配置:
1.添加如下配置全局定义属性。
<properties>
<!--使用utf-8编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--spring version-->
<spring.version>4.3.14.RELEASE</spring.version>
</properties>
2.添加如下配置将spring依赖导入。
<dependencies>
<!-- Spring依赖 -->
<!-- 1.Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<!-- 这里会获取到properties标签内配置的spring.version的值 -->
<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>
<!-- 2.Spring dao依赖 -->
<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
<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>
<!-- 3.Spring web依赖 -->
<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>
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
3.添加如下配置,将mybatis相关依赖导入。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
4.添加如下配置,将mybatis与spring整合相关依赖导入。
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.0</version>
</dependency>
5.添加如下配置,将mysql连接驱动相关依赖导入。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
步骤二:
在src/main/resources目录上右键,New->XML Configuration File->Spring Config,创建一个spring的配置文件。
在web.xml中添加如下配置,将spring配置文件加入到项目的上下文中。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
步骤三:
在applicationContext.xml中添加如下配置,定义数据源,会话工厂及mapper扫描器。
<!-- 定义数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/earl_test?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
</bean>
<!-- 定义连接会话工厂 -->
<bean name="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 定义mybatis扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描的基础包 -->
<property name="basePackage" value="com.earl.mapper"></property>
<!-- 连接会话工厂 -->
<property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
</bean>
步骤四:
至此,spring与mybatis的简单整合已经完成,接下来我们通过一个测试方法来测试是否整合成功。在src/main/java下新建两个包,分别为存放映射数据表对象的model包和存放数据表操作的mapper包。我本地数据库中有个student表,因此对应在model包中建立一个与student表字段一致的Student对象,并在mapper包中创建一个接口StudentMapper,接口中简单定义查询全部学生的方法。具体如下图所示:
在src/test/java下新建测试方法,具体如下:
import com.earl.mapper.StudentMapper;
import com.earl.model.Student;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class HelloworldTest {
@Test
public void testQueryAll(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
StudentMapper studentMapper=(StudentMapper) context.getBean("studentMapper");
List<Student> students=studentMapper.queryAllStudents();
students.forEach(student->{
System.out.println(student);
});
}
}
运行该测试方法,能够获取到student表的全部数据。
四、小结
通过此次使用IDEA创建maven项目,真的品味到IDEA迷人之处,在项目配置等操作上的确要比Eclipse人性化很多,感受最深刻的就是在代码提示功能上,给了我前所未有的体验。好了,有了IDEA入门的使用经验后,在后面的工作学习过程中就可以再慢慢发掘它更深的使用。