Myatis学习-MyBatis概述及环境搭建

本文讲了什么

Mybatis是什么?为什么会出现?我们怎么搭建其环境?我们如何简单的理解Mybatis的作用。

什么是框架?

它是我们软件开发中的一套解决方案,不同框架解决不同的问题。

它是一个半成品,是一组组件,别人搭的舞台,你来表演

使用框架的好处:

  • 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率

三层架构

表现层:用于展示数据

业务层:是处理业务需求

持久层:是和数据库交互的
在这里插入图片描述

持久层技术解决方案

  • JDBC技术:Connection PreparedStatement ResultSet

  • Spring的JdbcTemplate: Spring中对jdbc的简单封装

  • Apache的DBUtils:它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装

  • 以上这些都不是框架,JDBC是规范,剩下两个都只是工具类

  • 传统JDBC很麻烦,要设置连接,执行sql,查询结果集,释放资源,很麻烦,很重复。实际上,我们最关注的只有sql

  • 将繁琐的部分封装起来,然后让我们将更多的精力给放到业务上来

Mybatis框架概述

  • mabatis是一个优秀的基于java持久层框架,它内部封装了jdbc的很多细节,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程
  • Mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成为java对象并返回
  • 采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使得我们不用于jdbc api打交道,就可以完成对数据库的持久化操作
  • ORM(object relational mapping对象关系映射):将数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就可以实现操作数据库

Mybatis入门练习

创建数据库以及表

  • 并加入数据

创建maven工程,准备数据库,导入依赖坐标

  • 就是一个普通的maven工程,并没有什么不同

  • 打包方式用jar包

  • 引入mybatis的依赖,通过官网来找依赖的坐标

  • 光有mybatis可不行,还要有数据库的

  • 然后日志log4j

  • 然后单元测试junit

  • 使用mybatis只要上面两个就够了

  • 在这里插入图片描述
    效果如图,jar包已经有了

    <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.2</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.41</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    

搭建环境

  • 要准备的domain和dao

  • dao(data access object)数据访问层

  • domain与数据库表一一对应的javabean(三层架构之外多出来的一层)

  • domain里放的是实体类(与数据库表一一对应),而dao中放的是数据库交互的方法

  • 在这里插入图片描述

  • 配置mybatis的环境

  • resources下创建SqlMapConfig.xml,其中要加约束和声明。

    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!--以上是约束,下面开始配置-->
    
    <!--mybatis的主配置文件-->
    <configuration>
        <!--    配置环境-->
        <environments default="mysql">
            <!--        配置mysql环境-->
            <environment id="mysql">
                <!--            配置事务的类型-->
                <transactionManager type="JDBC"></transactionManager>
                <!--            配置数据源(连接池)-->
                <dataSource type="POOLED">
                    <!--            配置连接数据库的4个基本信息-->
                    <property name="driver" value="com.mysql.jdbc.Driver"></property>
                    <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"></property>
                    <property name="username" value="root"></property>
                    <property name="password" value="root"></property>
                </dataSource>
            </environment>
        </environments>
        <!--        指定映射配置文件的位置,映射配置文件值的是每个dao独立的配置文件-->
        <mappers>
            <mapper resource="com/itheima/dao/IUserDao.xml"/>
        </mappers>
    
    </configuration>
    

配置dao接口(配置文件)

该配置文件存放在resources下,目录结构与dao接口文件一一对应(不然找不到)。然后其作用就是配置对应接口中的方法所使用的sql语句,从而让mybatis来帮助我们构建实现类。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.itheima.dao.IUserDao">
 <!--配置查询所有-->
 <select id="findAll">
     select * from user
 </select>
</mapper>

环境搭建小结

第一步:创建maven工程并导入坐标

第二部:创建实体类和dao的接口

第三步:创建Mybatis的主配置文件 SqlMapConfig.xml

第四步:创建映射配置文件IUserDao.xml

环境搭建的注意事项:

  1. 创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识保持一致。而在Mybatis中它把持久层的操作接口名称和映射文件也叫做mapper。所以IUserDao和IUserMapper是一样的(ylrc)

  2. 在idea中创建目录时,它和包是不一样的。包在创建时,如com.itheima.dao是三级结构,而directory是一级结构,所以如果要三层的话,需要逐个创建

  3. mybatis的映射配置文件位置必须和dao接口的包结构相同。一个在main-java目录下,一个在resources目录下,二者要对应起来

  4. 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名

  5. 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名

    当我们遵从了3,4,5点之后,我们在开发中就无需再写dao的实现类,我们在开发中就无需再写dao的实现类。mybatis帮我们去实现。(这是挺方便的,我们只需要定义接口,定义sql语句,然后就不用管了,之前我们还要自己写实现类,其实很麻烦的)

猜你喜欢

转载自blog.csdn.net/qq_34687559/article/details/110224778
今日推荐