21.08.04笔记 — mybatis入门学习

mybatis入门

mybatis简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
image

查看mybatis文档

优点

1.基于SQL语法,简单易学。
2.能了解底层组装过程。 
3.SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。`
4.程序调试方便。
所有sql语句,全部定义在xml(建议)中。也可以通过注解的方式在接口上实现。这些映射文件称之为mapper。

ORM映射框架

对象关系映射
思想:对象模型和关系模型的映射。
把对象领域的一个类映射为关系领域的一个表。
类的属性映射为表的字段。
类的一个对象映射为表的一行记录。

在java程序中,把对数据库表记录的操作映射为对java对象的操作。
Hibernate 纯ORM映射框架  ,不需要编写sql语句。  编写Hql语句。
Mybatis  半ORM映射框架,  sql语句需要程序员编写。

Mybatis工作原理

                               Mybatis配置文件有2种
Mybatis的主配置文件,SqlMapConfig.xml  配置mybatis整体配置信息比如:连接池,settings,plugin,mapper........
一个工程下需要一个,保存在类路径下。src
Mybatis的映射文件, xxxMapper.xml  比如:UserMapper.xml
该文件主要用来定义sql语句。保存在类路径,也可以保存在其他目录
SqlSessionFactory 用来管理SqlSession对象。
SqlSession对象,对Connection对象的封装。
SelSessionFactory 重量级的对象,创建耗费资源。属于单例对象,线程安全的。
SqlSession对象,线程不安全的,轻量级对象,每次对数据库的操作使用独立的SqlSession对象。
在Mybatis映射文件中,定义的一条sql语句,有多个组成部分,
包括:sql 语句,唯一的id,输入参数,输出参数等。
是一个整体,称作是一个statement。
Statement的作用:把输入参数,输出参数和sql语句整合到一起。
Execution 执行器
用来执行一个statement,把sql语句提交到数据库并执行。

mybatis用到的jar包
image

其中与日志有关的为log4j和slf4j
slf4j是日志的规范,log4j是规范的实现
javassist与cblib是代理工具,用来生成代理类
javassist是java的动态代理,cglib是第三方代理
(代理是什么?比如你想买华为手机,不是去华为总部,而是去华为的销售店,销售店的手机与总部生产的手机是一样的,那么销售店就是总部的一个代理。所以代理类与目标类中的方法是相同的)
用mybatis开发工具,需要把jar包拷到工程下,但是用maven的话,直接添加依赖就行了

maven简介

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
现在Maven多用与管理依赖

创建一个maven项目

image

直接点击下一步,选择模板可能会导致项目目录不全

image
构件坐标就是maven用来找jar包的坐标,分为三部分
GroupId(域名的反写)、ArtifactId(项目名)、版本号
创建好后,我的目录结构为
image

修改仓库

在maven所在文件夹下的conf中,找到settings.xml(默认路径在c盘user下的.m2中)
image
在该文件中还可以修改镜像文件

引入依赖

在pom.xml文件中导入依赖

<dependencies>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.4</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.17</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.14</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.25</version>
	</dependency>
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
		<type>pom.lastUpdated</type>
	</dependency>
	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-core</artifactId>
		<version>2.5</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.12</version>
	</dependency>
	<dependency>
		<groupId>javassist</groupId>
		<artifactId>javassist</artifactId>
		<version>3.11.0.GA</version>
	</dependency>
	<dependency>
		<groupId>cglib</groupId>
		<artifactId>cglib</artifactId>
		<version>3.2.5</version>
	</dependency>
</dependencies>

引入的包与之前图片中看到的一样,还多几个单元测试的
注意MySQL的版本改为自己的

配置文件

在resources中创建一个xml文件,名称可以随意,但是规范的命名为SqlMapConfig
内容比较固定

<?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资源文件   ,数据库连接的资源文件-->
    <properties resource="DB.properties">
    </properties>

    <!-- 配置环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置mybatis事务管理 ,jdbc的事务管理
                JDBC - 这个类型直接全部使用 JDBC 的提交和回滚功能。它依靠使用连接的数据源来管理事务的作用域。
                MANAGED  - 这个类型什么不做 , 它从不提交 、 回滚和关闭连接 。 而是让窗口来管理事务的全部生命周期 。
                (比如说 Spring 或者 JAVAEE 服务器)
              -->
            <transactionManager type="JDBC"/>
            <!-- 配置数据源
                 UNPOOLED :这个数据源实现只是在每次请求的时候简单的打开和关闭一个连接。
                 虽然这有点慢,但作为一些不需要性能和立即响应的简单应用来说 , 不失为一种好选择
                 不用连接池。
                 POOLED : 使用连接池管理connection对象
                 JNDI :      使用其他框架 如spring来管理连接
                 ${} OGNL表达式     在jsp页面中%{}
              -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.user}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加载映射文件 -->
    <mappers>
    </mappers>
</configuration>

xml文件的约束有两种,一种是xsd一种是dtd
image
引用数据库的文件
image
image
按照自己的数据库修改名称与账号密码
其他的在注释中已经写的比较清楚了

入门程序

mybatis入门程序

posted @ 2021-08-06 12:03  九尾。  阅读(140)  评论(0编辑  收藏  举报