Maven学习(一)

作者: giraffecode9668 | 来源:发表于2019-03-02 00:16 被阅读7次

前言

通过上文对Maven有的一个基本入门,我们已经对Maven有了一个初步的体会,接下来我将结合我近期看的书本知识和借助搜索引擎对Maven的每一个元素,各种原理进行解释。该一系列文章为本人学习过程中所做的记录,可能存在疏漏或者错误的地方,望读者不吝指教。


配置文件和映射器

入门项目webapp3的项目结构中,我们新建了三个文件,现在来分析它们的名称和作用。

映射器和配置文件

什么是映射器?映射器的主要作用是将SQL查询到结果映射为一个POJO,或者将POJO的数据插入到数据库中,并定义一些关于缓存等的重要内容。

POJO(Plain Ordinary Java Object)是简单的javaBeans,也就是我们常常写的对象实体类,映射器能将java对象和数据库表中的数据交互。
映射器的实现有两种,官方推荐使用的是使用一个接口和xml文件;另外一种是使用一个接口并在接口中写入注解(这种方式创建简单,但是有时过多的SQL语句使注解繁多,代码可读性下降)

什么是配置文件?对Mybatis框架某些属性进行配置的文件。

使用xml实现映射器

项目中使用的是这种映射器方式

步骤 内容
步骤一 定义POJO,例子中指entity中的Category.java。
步骤二 建立接口文件CategoryMapper.java。(这个例子是特例,没有建立接口)
步骤三 建立xml文件CategoryMapper.xml。
步骤四 在配置文件mybatis-config中引入映射器。
引入映射器

mybatis-config.xml配置文件中的代码指引入映射器:

    <mappers>
        <mapper resource="main/com/test/entity/Category.xml"/>
    </mappers>

引入映射器由好几种方法,介绍主要的3种方法

    <mappers>
        <!--先找xml再找接口,xml和接口可以在不同包-->
        <mapper resource="main/com/test/mapper/CategoryMapper.xml"/>

        <!--先找接口再找xml,xml和接口在同一包-->
        <!--<package name="main.com.test.mapper"/>-->

        <!--先找接口再找xml,xml和接口在同一包-->
        <!--<mapper class="main.com.test.mapper.CategoryMapper"/>-->
    </mappers>

1.用文件路径引入映射器。(例子中使用的)

    <mappers>
        <!--先找xml再找接口,xml和接口可以在不同包-->
        <mapper resource="main/com/test/entity/Category.xml"/>
    </mappers>

2.用包名引入映射器

    <mappers>
       <!--先找接口再找xml,xml和接口在同一包-->
        <package name="main.com.test.mapper"/>
    </mappers>

3.用类注册引入映射器

    <mappers>
       <!--先找接口再找xml,xml和接口在同一包-->
        <mapper class="main.com.test.mapper.CategoryMapper"/>
    </mappers>
映射器xml文件和接口

CategoryMapper.xml中,只有元素<mapper>,在<mapper>中写着我们编写的SQL语句

<mapper namespace="main.com.test.mapper.CategoryMapper">
    <select id="getCategoryList" resultType="Category">
        select * from   category_
    </select>
</mapper>
  • <mapper>元素中的属性namespace所对应的是接口的全限定名,Mybatis通过它找到对应的接口
  • <select>元素是查询语句,属性id是这条语句的唯一标识,属性resultType表示返回值的类型,在<select>元素中编写SQL语句

CategoryMapper.java接口中,方法要和xml文件中SQL语句的id一致,Mybatis才能够实现自动映射的功能(执行该方法执行对应的SQL语句)

public interface CategoryMapper {
    List<Category> getCategoryList();
}

使用注解实现映射器

映射器中的SQL语句可以不使用xml文件,而是用注解的形式补充在接口对应的方法上,可以把CategoryMapper.java修改为

public interface CategoryMapper {
    @Select("select * from   category_")
    List<Category> getCategoryList();
}

配置文件中改为类名注册

 <mappers>
        <!--先找xml再找接口,可以在不同包-->
        <!--<mapper resource="main/com/test/mapper/CategoryMapper.xml"/>-->

        <!--先找接口再找xml,同一包-->
        <!--<package name="main.com.test.mapper"/>-->

        <!--先找接口再找xml,同一包-->
        <mapper class="main.com.test.mapper.CategoryMapper"/>
    </mappers>

CategoryMapper.xml注释掉代码

<mapper namespace="main.com.test.mapper.CategoryMapper">

    <!--<select id="getCategoryList" resultType="Category">-->
        <!--select * from   category_-->
    <!--</select>-->

</mapper>

重新运行代码,运行正常
使用注解实现映射器比xml实现映射器简单得多,如果它和xml方式同时定义时,xml方式将覆盖掉注解方式,所以Mybatis官方推荐使用的是xml方式。同时如果SQL语句复杂,导致注解增多,代码可读性下降

发送SQL的两种方式

//测试类
public class TestMybatis {

    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session=sqlSessionFactory.openSession();

//        方法一:
        List<Category> cs =session.selectList("getCategoryList");

//        方法二:
//        CategoryMapper c = session.getMapper(CategoryMapper.class);
//        List<Category> cs = c.getCategoryList();

        for(Category cc:cs){
            System.out.println(cc.getName());
        }


    }
}
SqlSession发送SQL

方法一是使用SqlSession发送SQL,它的参数是接口中的方法和实参组成

Mapper发送SQL

方法二是使用Mapper发送SQL,它调用SqlSession的getMapper方法,并赋给对象,所以使用接口中的某个方法:对象名.xx

相关文章

  • Maven快速上手

    1、Maven介绍 注:改章节的内容主要粘贴自:Maven学习总结(一)——Maven入门。Maven(这个单词来...

  • maven学习笔记

    maven学习笔记 2016年1月6日 一、maven安装 windows下maven安装安装maven前,首先要...

  • Maven学习(四) Maven 聚合 继承 单继承

    Maven学习(四) Maven 聚合 继承 单继承 聚合 Maven聚合:一个Maven项目,用来管理它的mav...

  • Maven学习(一)

    一、Maven是什么? Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架...

  • Maven学习(一)

    一、学习原因 最近在做分布式项目,由于之前学习的maven有很多都忘记了,所以借着这次机会,想把以前的一些知...

  • Maven学习(一)

    Mybatis初体验——在maven基础下配置Mybatis maven学习(一)——使用映射器 前言通过上文对M...

  • 2019-03-03

    技术:有关maven学习 互联网运营:关于运营和做简历 一、有关Maven的学习: 1、有关maven包的下载:h...

  • maven学习笔记(一):maven说明

    1:什么是maven -Maven意为“知识的积累”、“专家”或者“内行”的意思,maven是一个跨平台的项目管理...

  • Maven学习笔记(一):Maven概述

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合...

  • maven的应用(摘自菜鸟教程)

    一直使用maven,缺少系统化学习,找了本教程,系统的了解和学习下 1 maven的基本概念 maven安装 po...

网友评论

    本文标题:Maven学习(一)

    本文链接:https://www.haomeiwen.com/subject/ukwjuqtx.html