【JavaWeb】二、Maven&Mybatis

文章目录

  • 参考资料
  • 本章目标
  • 1. Maven
    • 1.1 Maven简介
      • 1. Maven模型
      • 2. 仓库
    • 1.2 Maven安装配置
    • 1.3 Maven基本使用
      • 1. Maven 常用命令
      • 2. Maven 生命周期
    • 1.4 IDEA使用Maven
      • 1. IDEA配置Maven环境
      • 2. Maven 坐标详解
      • 3. IDEA 创建 Maven项目
      • 4. IDEA 导入 Maven项目
    • 1.5 依赖管理
      • 1. 使用坐标引入jar包
      • 2. 依赖范围
  • 2. Mybatis
    • 2.1 Mybatis概述
      • 1. Mybatis概念
      • 2. JDBC 缺点
      • 3. Mybatis 优化
    • 2.2 Mybatis快速入门
    • 2.3 Mapper代理开发
      • 1. Mapper代理开发概述
      • 2. 使用Mapper代理要求
      • 3. 案例代码实现
    • 2.4 核心配置文件
      • 1. 多环境配置
      • 2. 类型别名

参考资料

  1. https://www.bilibili.com/video/BV1Qf4y1T7Hx?p=42

本笔记是基于黑马程序员的课件以及视频资料所做。所涉及的资料可在下面的度盘链接找到:

链接:https://pan.baidu.com/s/1g9vV_zmS9l-f0NYw8xevAQ
提取码:3ze7
复制这段内容后打开百度网盘手机App,操作更方便哦

本章目标

  • 能够使用Maven进行项目的管理
  • 能够完成Mybatis代理方式查询数据
  • 能够理解Mybatis核心配置文件的配置

1. Maven

Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构
    项目结构我们都知道,每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。而Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目完全一样,所以IDE创建的Maven项目可以通用。
    【JavaWeb】二、Maven&Mybatis_第1张图片

  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)

    【JavaWeb】二、Maven&Mybatis_第2张图片

    如上图所示我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。

  • 提供了一套依赖管理机制
    依赖管理其实就是管理项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包,复制到项目中,还要将jar包加入工作环境这一系列的操作。
    在这里插入图片描述

    而Maven使用标准的坐标配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
    在这里插入图片描述
    如上图右边所示就是mysql驱动包的坐标,在项目中只需要写这段配置,其他都不需要我们担心,Maven都帮我们进行操作了。

1.1 Maven简介

Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

官网 :http://maven.apache.org/

通过上面的描述大家只需要知道Maven是一个工具即可。Apache 是一个开源组织,将来我们会学习很多Apache提供的项目。

1. Maven模型

  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)
    【JavaWeb】二、Maven&Mybatis_第3张图片

如上图所示就是Maven的模型,而我们先看紫色框框起来的部分,他就是用来完成 标准化构建流程 。如我们需要编译,Maven提供了一个编译插件供我们使用,我们需要打包,Maven就提供了一个打包插件提供我们使用等。

上图中紫色框起来的部分,项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标,如下图所示是一个Maven项目:
【JavaWeb】二、Maven&Mybatis_第4张图片

依赖管理模型则是使用坐标来描述当前项目依赖哪儿些第三方jar包,如下图所示
【JavaWeb】二、Maven&Mybatis_第5张图片

2. 仓库

大家想想这样的场景,我们创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。

仓库分类:

  • 本地仓库:自己计算机上的一个目录

  • 中央仓库:由Maven团队维护的全球唯一的仓库

    • 地址: https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:

  • 如果有,则在项目直接引用;
  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库。

如果还可以搭建远程仓库,jar包的查找顺序则变为:

本地仓库 --> 远程仓库--> 中央仓库

1.2 Maven安装配置

这部分可参考视频

Maven文件夹里的目录结构如下:
【JavaWeb】二、Maven&Mybatis_第6张图片

  • bin目录 : 存放的是可执行命令。mvn 命令重点关注。
  • conf目录 :存放Maven的配置文件。settings.xml 配置文件后期需要修改。
  • lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。

除了要配置环境变量外,还需要配置本地仓库和配置阿里云私服。

  • 配置本地仓库
    修改 conf/settings.xml 中的 为一个指定目录作为本地仓库,用来存储jar包。
    【JavaWeb】二、Maven&Mybatis_第7张图片

  • 配置阿里云私服
    中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。

修改 conf/settings.xml 中的 标签,为其添加如下子标签:

<mirror>  
    <id>alimavenid>  
    <name>aliyun mavenname>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/url>
    <mirrorOf>centralmirrorOf>          
mirror>

1.3 Maven基本使用

1. Maven 常用命令

  • compile :编译

  • clean:清理

  • test:测试

  • package:打包

  • install:安装

资料\代码\maven-project 提供了一个使用Maven构建的项目,项目结构如下:
【JavaWeb】二、Maven&Mybatis_第8张图片

进入到项目的 pom.xml 目录下,打开命令提示符/终端:
编译命令

mvn compile

执行上述命令可以看到:

  • 从阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件
  • 在项目下会生成一个 target 目录
    【JavaWeb】二、Maven&Mybatis_第9张图片

清理命令:

mvn clean

执行上述命令可以看到

  • 从阿里云下载清理需要的插件jar包
  • 删除项目下的 target 目录
    【JavaWeb】二、Maven&Mybatis_第10张图片

打包命令:

mvn package

执行上述命令可以看到:

  • 从阿里云下载打包需要的插件jar包
  • 在项目的 terget 目录下有一个jar包(将当前项目打成的jar包)
    【JavaWeb】二、Maven&Mybatis_第11张图片

测试命令:

mvn test  

该命令会执行所有的测试代码。执行上述命令效果如下
【JavaWeb】二、Maven&Mybatis_第12张图片

安装命令:

mvn install

该命令会将当前项目打成jar包,并安装到本地仓库。
【JavaWeb】二、Maven&Mybatis_第13张图片

2. Maven 生命周期

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件

Maven 对项目构建的生命周期划分为3套:

  • clean :清理工作。
  • default :核心工作,例如编译,测试,打包,安装等。
  • site : 产生报告,发布站点等。这套声明周期一般不会使用。

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:

在这里插入图片描述

当我们执行 install(安装)命令时,它会先执行 compile命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。

当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。

默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:
【JavaWeb】二、Maven&Mybatis_第14张图片

1.4 IDEA使用Maven

本小节可参考视频

1. IDEA配置Maven环境

  • 选择 IDEA中 File --> Settings
    【JavaWeb】二、Maven&Mybatis_第15张图片

  • 搜索 maven
    【JavaWeb】二、Maven&Mybatis_第16张图片

  • 设置 IDEA 使用本地安装的 Maven,并修改配置文件路径

    【JavaWeb】二、Maven&Mybatis_第17张图片

2. Maven 坐标详解

什么是坐标?

  • Maven 中的坐标是资源的唯一标识
  • 使用坐标来定义项目或引入项目中需要的依赖

Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
  • version:定义当前项目版本号

如下图就是使用坐标表示一个项目:

【JavaWeb】二、Maven&Mybatis_第18张图片

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。
  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

3. IDEA 创建 Maven项目

  • 创建模块,选择Maven,点击Next
    【JavaWeb】二、Maven&Mybatis_第19张图片

  • 填写模块名称,坐标信息,点击finish,创建完成
    【JavaWeb】二、Maven&Mybatis_第20张图片

  • 创建好的项目目录结构如下:
    【JavaWeb】二、Maven&Mybatis_第21张图片

4. IDEA 导入 Maven项目

  • 选择右侧Maven面板,点击 + 号
    【JavaWeb】二、Maven&Mybatis_第22张图片

  • 选中对应项目的pom.xml文件,双击即可
    【JavaWeb】二、Maven&Mybatis_第23张图片

  • 如果没有Maven面板,选择

    View --> Appearance --> Tool Window Bars
    

    【JavaWeb】二、Maven&Mybatis_第24张图片

  • 可以通过maven面板如下图所示进行命令的操作:

    【JavaWeb】二、Maven&Mybatis_第25张图片

  • 除此之外,也还可以再安装 Maven-Helper 插件,这里不再赘述。

1.5 依赖管理

1. 使用坐标引入jar包

使用坐标引入jar包的步骤:

  • 在项目的 pom.xml 中编写 标签

  • 在 标签中 使用 引入坐标

  • 定义坐标的 groupId,artifactId,version

  • 点击刷新按钮,使坐标生效
    【JavaWeb】二、Maven&Mybatis_第26张图片

注意:

  • 具体的坐标我们可以到如下网站进行搜索
  • https://mvnrepository.com/

快捷方式导入jar包的坐标:
每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来给大家介绍一种快捷引入坐标的方式

  • 在 pom.xml 中 按 alt + insert,选择 Dependency
    【JavaWeb】二、Maven&Mybatis_第27张图片

  • 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
    【JavaWeb】二、Maven&Mybatis_第28张图片

  • 点击刷新按钮,使坐标生效

自动导入设置:
上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成

  • 选择 IDEA中 File --> Settings

    【JavaWeb】二、Maven&Mybatis_第29张图片

  • 在弹出的面板中找到 Build Tools

  • 选择 Any changes,点击 ok 即可生效
    【JavaWeb】二、Maven&Mybatis_第30张图片

2. 依赖范围

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
【JavaWeb】二、Maven&Mybatis_第31张图片

scope 的取值:
【JavaWeb】二、Maven&Mybatis_第32张图片

  • compile :作用于编译环境、测试环境、运行环境。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

2. Mybatis

2.1 Mybatis概述

1. Mybatis概念

  • MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发

  • MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github

  • 官网:https://mybatis.org/mybatis-3/zh/index.html

持久层:

  • 负责将数据到保存到数据库的那一层代码。

    以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装。

  • JavaEE三层架构:表现层、业务层、持久层

    三层架构在后期会给大家进行讲解,今天先简单的了解下即可。

框架:

  • 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
  • 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

2. JDBC 缺点

下面是 JDBC 代码,我们通过该代码分析都存在什么缺点:
【JavaWeb】二、Maven&Mybatis_第33张图片

  • 硬编码

    • 注册驱动、获取连接

      上图标1的代码有很多字符串,而这些是连接数据库的四个基本信息,以后如果要将Mysql数据库换成其他的关系型数据库的话,这四个地方都需要修改,如果放在此处就意味着要修改我们的源代码。

    • SQL语句

      上图标2的代码。如果表结构发生变化,SQL语句就要进行更改。这也不方便后期的维护。

  • 操作繁琐

    • 手动设置参数

    • 手动封装结果集

      上图标4的代码是对查询到的数据进行封装,而这部分代码是没有什么技术含量,而且特别耗费时间的。

3. Mybatis 优化

  • 硬编码可以配置到配置文件
  • 操作繁琐的地方mybatis都自动完成
    【JavaWeb】二、Maven&Mybatis_第34张图片

2.2 Mybatis快速入门

需求:查询user表中所有的数据

【JavaWeb】二、Maven&Mybatis_第35张图片

  • 创建user表,添加数据

    create database mybatis;
    use mybatis;
    
    drop table if exists tb_user;
    
    create table tb_user(
    	id int primary key auto_increment,
    	username varchar(20),
    	password varchar(20),
    	gender char(1),
    	addr varchar(30)
    );
    
    INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
    INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
    INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
    
  • 创建模块,导入坐标
    在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标

        <dependencies>
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>3.5.5version>
            dependency>
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.32version>
            dependency>
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.13version>
                <scope>testscope>
            dependency>
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-apiartifactId>
                <version>1.5.6version>
            dependency>
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-classicartifactId>
                <version>1.2.3version>
            dependency>
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-coreartifactId>
                <version>1.2.3version>
            dependency>
        dependencies>
    

    注意:需要在项目的 resources 目录下创建logback的配置文件。logback.xml文件如下:

    
    <configuration>
        
        <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%level]  %cyan([%thread]) %boldGreen(%logger{15}) - %msg %npattern>
            encoder>
        appender>
    
        <logger name="com.itheima" level="DEBUG" additivity="false">
            <appender-ref ref="Console"/>
        logger>
    
    
        
        <root level="DEBUG">
            <appender-ref ref="Console"/>
        root>
    configuration>
    
  • 编写 MyBatis 核心配置文件 – > 替换连接信息 解决硬编码问题
    在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml,内容如下:

    
    
    <configuration>
    
        <typeAliases>
            <package name="pers.chh3213.pojo"/>
        typeAliases>
    
        
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="5213"/>
                dataSource>
            environment>
    
            <environment id="test">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="5213"/>
                dataSource>
            environment>
        environments>
        <mappers>
            
            <mapper resource="UserMapper.xml"/>
        mappers>
    configuration>
    

    注意修改里面的相关信息。

  • 编写 SQL 映射文件 --> 统一管理sql语句,解决硬编码问题
    在模块的 resources 目录下创建映射配置文件 UserMapper.xml,内容如下:

    
    
    <mapper namespace="test">
    
        <select id="selectAll" resultType="pers.chh3213.pojo.User">
            select * from tb_user;
        select>
    mapper>
    
  • 编码
    pers.chh3213.pojo 包下创建 User类

    package pers.chh3213.pojo;
    
    public class User {
          private int  id;
          private String  username;
          private String  password;
          private String  gender ;
          private String  addr;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getAddr() {
            return addr;
        }
    
        public void setAddr(String addr) {
            this.addr = addr;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", gender='" + gender + '\'' +
                    ", addr='" + addr + '\'' +
                    '}';
        }
    }
    

    编写 MybatisDemo 测试类

    package pers.chh3213;
    
    
    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 pers.chh3213.pojo.User;
    
    import javax.annotation.Resource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class MybatisDemo {
        public static void main(String[] args) throws Exception {
            //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //2. 获取SqlSession对象,用它来执行sql
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //3. 执行sql
            List<User> users = sqlSession.selectList("test.selectAll"); //参数是一个字符串,该字符串必须是映射配置文件的namespace.id
            System.out.println(users);
            //4. 释放资源
            sqlSession.close();
        }
    
    }
    
    

运行测试类后如果报如下错误:
mybatis错误——java.io.IOException: Could not find resource com/xxx/xxxMapper.xml
可参考此篇博客

解决SQL映射文件的警告提示:

在入门案例映射配置文件中存在报红的情况。问题如下:
在这里插入图片描述

  • 产生的原因:Idea和数据库没有建立连接,不识别表信息。但是大家一定要记住,它并不影响程序的执行。
  • 解决方式:在Idea中配置MySQL数据库连接。
    点击IDEA右边框的 Database ,在展开的界面点击 + 选择 Data Source ,再选择 MySQL,填写基本信息后连接即可。具体可百度。

2.3 Mapper代理开发

1. Mapper代理开发概述

之前我们写的代码是基本使用方式,它也存在硬编码的问题,如下:
在这里插入图片描述

这里调用 selectList() 方法传递的参数是映射配置文件中的 namespace.id值。这样写也不便于后期的维护。如果使用 Mapper 代理方式(如下图)则不存在硬编码问题。

在这里插入图片描述

通过上面的描述可以看出 Mapper 代理方式的目的:

  • 解决原生方式中的硬编码
  • 简化后期执行SQL

2. 使用Mapper代理要求

【JavaWeb】二、Maven&Mybatis_第36张图片

  • 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。类似下图:
    【JavaWeb】二、Maven&Mybatis_第37张图片

  • 设置SQL映射文件的namespace属性为Mapper接口全限定名,类似如下:
    【JavaWeb】二、Maven&Mybatis_第38张图片

  • 在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致,类似如下:
    【JavaWeb】二、Maven&Mybatis_第39张图片

3. 案例代码实现

  • 在 对应的包下创建 UserMapper接口(例如我这边是在pers.chh3213.mapper包下),代码如下:

    public interface UserMapper {
        List<User> selectAll();
    }
    
  • resources 下创建 pers/chh3213/mapper 目录,并在该目录下创建 UserMapper.xml 映射配置文件:

    <!--
        namespace:名称空间。必须是对应接口的全限定名
    -->
    <mapper namespace="pers.chh3213.mapper.UseMapper">
        <select id="selectAll" resultType="pers.chh3213.pojo.User">
            select *
            from tb_user;
        </select>
    </mapper>
    
  • pers.chh3213 包下创建 MybatisDemo2 测试类,代码如下:

    package pers.chh3213;
    
    
    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 pers.chh3213.mapper.UseMapper;
    import pers.chh3213.pojo.User;
    
    import java.io.InputStream;
    import java.util.List;
    
    public class MybatisDemo2 {
        public static void main(String[] args) throws Exception {
            //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //2. 获取SqlSession对象,用它来执行sql
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //3. 执行sql
            UseMapper useMapper = sqlSession.getMapper(UseMapper.class);
            List<User> users = useMapper.selectAll();
            System.out.println(users);
            //4. 释放资源
            sqlSession.close();
        }
    
    }
    
    

注意:

如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。也就是将核心配置文件(mybatis-config.xml)的加载映射配置文件的配置修改为

    <mappers>
        

        
        <package name="pers.chh3213.mapper"/>
    mappers>

以上完整程序可参考gitee仓库

2.4 核心配置文件

核心配置文件中现有的配置之前已经给大家进行了解释,而核心配置文件中还可以配置很多内容。我们可以通过查询官网看可以配置的内容
【JavaWeb】二、Maven&Mybatis_第40张图片

1. 多环境配置

在核心配置文件的 environments 标签中其实是可以配置多个 environment ,使用 id 给每段环境起名,在 environments 中使用 default='环境id' 来指定使用哪儿段配置。我们一般就配置一个 environment 即可。

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="5213"/>
            dataSource>
        environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="5213"/>
            dataSource>
        environment>
    environments>

2. 类型别名

在映射配置文件中的 resultType 属性需要配置数据封装的类型(类的全限定名)。而每次这样写是特别麻烦的,Mybatis 提供了 类型别名(typeAliases) 可以简化这部分的书写。

首先需要现在核心配置文件中配置类型别名,也就意味着给pojo包下所有的类起了别名(别名就是类名),不区分大小写。内容如下:


    <typeAliases>
        <package name="pers.chh3213.pojo"/>
    typeAliases>

通过上述的配置,我们就可以简化映射配置文件中 resultType 属性值的编写

<mapper namespace="pers.chh3213.mapper.UserMapper">

    <select id="selectAll" resultType="user">
        select * from tb_user;
    select>
mapper>

你可能感兴趣的:(#,JavaWeb,mysql,数据库,maven,javaweb)