一、maven环境的搭建
1.1、什么是maven
1、构建工具:清理--编译--测试--报告--打包--部署。
高度自动化、跨平台、丰富的可重用组件、标准化。
2、依赖管理工具。
中央仓库
log4j ---------->log4j:log4j:1.2.15
spring ---------->org.springframework:spring-core:2.5
struts ---------->org.apache.struts:struts-core:2.1.0
3、项目信息聚合。
版本控制系统信息,缺陷跟踪系统信息,开发者信息,许可证信息……
项目站点:javadoc,测试覆盖,代码静态分析报告……
·Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
·Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
1.2、为什么要使用maven
maven可以作为依赖管理工具。
项目中需要引入的各种jar包非常多,自己管理非常麻烦。有了maven可以直接在pom文件中,写入对应的依赖项,maven自动帮我们配置下载。
使用Maven后,可以根据具体的名称、版本、具体细节依赖对应的jar包,能够自动下载,方便、快捷又规范。
jar包之间的依赖关系也是非常复杂的,有时也会出现一些冲突,而maven可以帮我们管理这些依赖
1.3、下载maven
maven官方网址:Maven – 下载 Apache Maven。
下载完成后解压。
Windows系统下安装:
·首先需要确认系统中装有JDK(版本1.4+)。
·将压缩包解压到本地磁盘某目录中,该目录则称为安装目录。例如:
目录结构:
bin | Maven的运行脚本 |
boot | Maven自己的类装载器 |
conf | 该目录下包含了全局行为定制文件setting.xml |
lib | Maven运行时所需的类库 |
1.4、配置环境变量
在path变量中增加%M2_HOME%\bin或者使用绝对路径也可以。
检查安装正确性:
小贴士:请确保已正确安装JDK并配置环境变量。
在命令行提示符下执行:mvn –v。能看到Maven和JDK的版本号为安装正确。
1.5、本地仓库
先在本地创建一个空的文件夹,用来存放项目中的jar文件。
比如:
在解压后的maven文件中打开conf文件夹找到settings.xml文件,打开加入以下配置:
<localRepository>E:/Maven_repository</localRepository>
如下图👇:
至此,maven本地仓库创建完成。下一步IDEA中使用!
二、IDEA中使用maven
2.1、IDEA中配置maven本地仓库
不配置本地仓库也可以创建项目,但是每次创建项目都需要下载对应组件,非常慢。
所以配置以下本地仓库,在创建项目的时候优先扫描本地文件,方便快捷。
2.2、maven创建mybatis项目
2.3、pom文件
<?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>cn.shq</groupId>
<artifactId>maven_project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- mysql数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- Junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
在pom文件中引入依赖坐标后,项目中不再需要手动添加各种jar包。
如果以后项目功能扩展需要用到其他jar包,则只需在pom文件中写入对应依赖坐标即可。
2.4、简单案例测试
(1)项目结构
(2)项目源码
mysqlDB.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/2101_files?useSSL=true
username=root
password=123456
log4j.properties
# 日志级别
log4j.rootLogger=debug, stdout
#
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
mybatisConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="mysqlDB.properties"></properties>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!-- 自动映射/自动装配-->
<setting name="autoMappingBehavior" value="FULL"/>
</settings>
<typeAliases>
<package name="cn.shq.model"/>
</typeAliases>
<!-- 环境配置 default中的名字是哪一个,则使用对应的配置-->
<environments default="x">
<environment id="x">
<!-- 事务管理-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/EmpMapper.xml"></mapper>
</mappers>
</configuration>
EmpMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.shq.dao.EmpDao">
<select id="selByEno" parameterType="int" resultType="Employee">
select * from employee where empno=#{empno}
</select>
</mapper>
EmpDao
public interface EmpDao {
Employee selByEno(int empno);
}
实体类右键生成即可,此处省略。
MybatisUtil
package cn.shq.util;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
// 会话
private static SqlSession session;
private static SqlSessionFactory factory;
//获取session的方法
public static SqlSession getSession() {
// 参数 true 代表 直接自动提交事务。
session=factory.openSession(true);
return session;
}
public static SqlSessionFactory getFactory() {
return factory;
}
// 读取资源
static {
String resource = "mybatisConfig.xml";
// 此处👇用字节/字符流都可以
InputStream stream=null;
try {
stream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
factory = new SqlSessionFactoryBuilder().build(stream);
}
}
测试类
测试类名字最好不要直接使用Test这个单词。
因为它和注解@Test重名会引起一些不必要的麻烦。
public class TestEmp {
@Test
public void test(){
SqlSession session = MybatisUtil.getSession();
EmpDao mapper = session.getMapper(EmpDao.class);
Employee employee = mapper.selByEno(1);
System.out.println(employee);
}
}
运行效果: