一、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

idea mvn下载sources命令 idea下载maven_mybatis

 

下载完成后解压。

Windows系统下安装:

·首先需要确认系统中装有JDK(版本1.4+)。

·将压缩包解压到本地磁盘某目录中,该目录则称为安装目录。例如:

idea mvn下载sources命令 idea下载maven_mybatis_02

目录结构:

bin 

Maven的运行脚本

boot

Maven自己的类装载器

conf

该目录下包含了全局行为定制文件setting.xml

lib

Maven运行时所需的类库

1.4、配置环境变量

idea mvn下载sources命令 idea下载maven_maven_03

 在path变量中增加%M2_HOME%\bin或者使用绝对路径也可以。

idea mvn下载sources命令 idea下载maven_intellij-idea_04

 检查安装正确性:

小贴士:请确保已正确安装JDK并配置环境变量。

在命令行提示符下执行:mvn –v。能看到Maven和JDK的版本号为安装正确。

idea mvn下载sources命令 idea下载maven_java_05

 1.5、本地仓库

先在本地创建一个空的文件夹,用来存放项目中的jar文件。

比如:

idea mvn下载sources命令 idea下载maven_idea mvn下载sources命令_06

在解压后的maven文件中打开conf文件夹找到settings.xml文件,打开加入以下配置

<localRepository>E:/Maven_repository</localRepository>

如下图👇:

idea mvn下载sources命令 idea下载maven_intellij-idea_07

 至此,maven本地仓库创建完成。下一步IDEA中使用!

二、IDEA中使用maven

2.1、IDEA中配置maven本地仓库

不配置本地仓库也可以创建项目,但是每次创建项目都需要下载对应组件,非常慢。

所以配置以下本地仓库,在创建项目的时候优先扫描本地文件,方便快捷。

idea mvn下载sources命令 idea下载maven_idea mvn下载sources命令_08

 2.2、maven创建mybatis项目

idea mvn下载sources命令 idea下载maven_maven_09

 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)项目结构

idea mvn下载sources命令 idea下载maven_intellij-idea_10

(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);
    }
}

运行效果:

idea mvn下载sources命令 idea下载maven_intellij-idea_11