IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Mybatis框架学习笔记(1) -> 正文阅读

[Java知识库]Mybatis框架学习笔记(1)

官方中文文档–>https://mybatis.org/mybatis-3/zh/getting-started.html
或点击–>mybatis文档
mybatis3版本的源码–>https://github.com/mybatis/mybatis-3/releases
或点击–>mybatis3源码

1.什么是mybatis

mybatis是个轻量级持久层框架;简化了持久层的使用;它是由iBatis更名而来的.
基于Java的数据库交互框架;封装了很多基础功能,方便开发使用.

mybatis框架也被称为ORM框架
ORM(ORM Object Relational Mapping ) 即:对象关系映射;
即使用简单的 XML注解配置和映射原生信息,将接口和 Java的实体类POJO(Plain Old Java Objects,普通的 Java 对象)映射为数据库中的记录.

官方文档–>https://mybatis.org/mybatis-3/zh/getting-started.html

持久层是什么呢?
Dao (Data Access Objects) 数据访问对象 ;也就是负责项目中的JAVA实体类对象与数据库进行交互;
之前比较经典的MVC三层架构,就有它的一席之位;
MVC三层架构是啥呢?
M(Model):就是Dao层和实体类模型层;
V(View):就是视图层;即前端的展示层;
C(Controller):就是控制层,即对之前的servlet进行了封装;

使用mybatis框架的话;就不用大量地去写代码手动设置参数以及获取结果集;

例如,之前写某个项目时,写的dao层;没有封装的那种;
要写很多的参数,然后获取结果集时还得一个一个取出;

在这里插入图片描述

传统的jdbc编程;比如说一个根据ID查询学生信息的sql处理;

  • 首先要加载数据库驱动;
  • 然后创建并获取数据库链接;
  • 创建 preparedStatement 对象;
  • 拼写 sql 语句,进行预编译;;
  • 然后设置 sql 语句中的占位符的值;
  • 执行 sql 语句并获取结果;
  • 对 sql 执行结果进行解析处理;要把结果一个一个地存到实体类的对象中;
  • 最后释放资源;

2.基础搭建使用

先去数据库创建数据表吧,比较简单,仅作为基础搭建mybatis使用的;

-- 学习mybatis框架;
-- 创建数据库;
CREATE DATABASE IF NOT EXISTS day20211024_study_mybatis_db CHARSET utf8;
-- 创建用户表;
CREATE TABLE IF NOT EXISTS t_user(
    `id` INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
    `account` VARCHAR(15)  COMMENT '账户',
    `password` VARCHAR(10) COMMENT '密码',
    `address` VARCHAR(20) COMMENT '地址'
);

直接创建javaEE项目

在这里插入图片描述

不用选web;直接下一步

在这里插入图片描述

写好项目名;存放地址;打包后的路径,构建名,版本号

在这里插入图片描述

(1)添加相关maven依赖

要使用mybatis,那么首先就得用添加它的jar包依赖;
当然,由于要和数据库交互,那么还要配置mysql连接的驱动jar包依赖

在maven核心配置文件pom.xml

<dependencies>
    <!--需要的mybatis依赖jar包-->
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.4.2</version>
     </dependency>
     <!--数据库驱动连接的jar包-->
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.22</version>
     </dependency>
</dependencies>

创建实体类User

在这里插入图片描述

(2)创建用户实体类User

User类的配置

package com.xiaozhi.pojo;

/**
 * @author by CSDN@小智RE0
 * @date 2021-10-24 22:07
 * 实体类User(用户类)
 */
public class User {
    //属性,id,账户,密码,地址;
    private int id;
    private String account;
    private String password;
    private String address;
    
    //构造方法;
    public User() {
        
    }
    
    //这里构造方法初始化时就没包括ID;
    public User(String account, String password, String address) {
        this.account = account;
        this.password = password;
        this.address = address;
    }
    
    //getter,setter;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

(3)创建核心配置文件mybatis-config.xml

main目录的resources目录下创建mybatis-config.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>

    <!--配置别名-->
    <typeAliases>
        <!--为实体类User配置别名为user-->
        <typeAlias type="com.xiaozhi.pojo.User" alias="user"/>
    </typeAliases>

    <!-- environments 环境配置 , 这里的default来指定默认使用的环境变量 -->
    <environments default="development">

        <!-- environment 环境变量 ;可以写多个,尽量保证id不重名就行-->
        <!--开发的环境变量-->
        <environment id="development">
            <!--事务管理-->
            <transactionManager type="JDBC">
            </transactionManager>
            <!--dataSource:数据源-->
            <dataSource type="POOLED">
                <!--数据库驱动,url连接,数据库账户,密码-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

        <!--模拟测试的环境变量;-->
        <environment id="test">
            <!--事务管理-->
            <transactionManager type="JDBC">
            </transactionManager>
            <!--dataSource:数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

(4)创建持久层接口UserMapper

package com.xiaozhi.mapper;

import com.xiaozhi.pojo.User;

/**
 * @author by CSDN@小智RE0
 * @date 2021-10-24 22:23
 * 持久层映射接口
 */
public interface UserMapper {
    //添加新用户;
    void addUser(User user);
}

(5) 创建持久层映射配置文件UserMapper.xml

resources目录下创建mapper文件夹;创建UserMapper.xml配置文件

<?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.xiaozhi.mapper.UserMapper">
    
    <!--添加新用户的sql-->
    <!--这里的parameterType 参数类型 就用刚才配置的别名 user了-->
    <insert id="addUser"  parameterType="user">
        insert into t_user(account,password,address)
        values (#{account},#{password},#{address})
    </insert>

</mapper>

(6)去核心配置文件mybatis-config.xml配置mapper映射文件

<?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>

    <!--配置别名-->
    <typeAliases>
        <!--为实体类User配置别名为user-->
        <typeAlias type="com.xiaozhi.pojo.User" alias="user"/>
    </typeAliases>

    <!-- environments 环境配置 , 这里的default来指定默认使用的环境变量 -->
    <environments default="development">

        <!-- environment 环境变量 ;可以写多个,尽量保证id不重名就行-->
        <!--开发的环境变量-->
        <environment id="development">
            <!--事务管理-->
            <transactionManager type="JDBC">
            </transactionManager>
            <!--dataSource:数据源-->
            <dataSource type="POOLED">
                <!--数据库驱动,url连接,数据库账户,密码-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

        <!--模拟测试的环境变量;-->
        <environment id="test">
            <!--事务管理-->
            <transactionManager type="JDBC">
            </transactionManager>
            <!--dataSource:数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/day20211024_study_mybatis_db?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="root" />
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--配置mapper映射-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

(7)测试使用;这里几个步骤比较重要;

📢7.1–>先创建用户对象

//先创建用户对象;
User user = new User("小智","123654789","陕西汉中");

📢7.2–>以字符流的方式读取核心配置文件mybatis-config.xml

//第一步:用字符流的方式去读取核心配置文件mybatis-config.xml;
//注意;导包的时候-->用 ibatis 下的包,不要导错了;
Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");

📢7.3–>创建SqlSessionFactory对象

一旦创建,SqlSessionFactory 就会在整个应用过程中始终存在。所以没有理由去销毁和再创建它,一个应用运行中也不建议多次创建 SqlSessionFactory

//第二步;创建sqlSessionFactory对象;
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);

注意,这里使用的build方法,还能指定环境变量啊;即刚才的核心配置文件中的环境变量environment;
不写这个参数的话,就默认为环境配置environmentsdefault来指定默认使用的环境变量;

在这里插入图片描述

📢7.4–>创建SqlSession对象

SqlSession就类似于JDBC中的Connection连接对象;表示一次与数据库连接的会话;

//第三步 SqlSession对象;
SqlSession sqlSession = sqlSessionFactory.openSession();

📢7.5–>得到UserMapper映射接口的代理对象

//第四步,得到UserMapper映射接口的代理对象;
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

📢7.6–>执行接口方法

但实际上执行了UserMapper.xml下的sql语句

//第五步,执行方法;
userMapper.addUser(user);

📢7.7–>提交事务

//第六步;提交事务;
sqlSession.commit();

📢7.8–>关闭sqlSession会话

//第七步;关闭sqlSession会话;
sqlSession.close();

TestByXiaoZhi类总配置

package com.xiaozhi.test;

import com.xiaozhi.mapper.UserMapper;
import com.xiaozhi.pojo.User;
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.Reader;

/**
 * @author by CSDN@小智RE0
 * @date 2021-10-24 22:34
 */
public class TestByXiaoZhi {
    public static void main(String[] args) throws IOException {
        //先创建用户对象;
        User user = new User("小智","123654789","陕西汉中");

        //第一步:用字符流的方式去读取核心配置文件mybatis-config.xml;
        //注意;导包的时候-->用 ibatis 下的包,不要导错了;
        Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");

        //第二步;创建sqlSessionFactory对象;
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);

        //第三步 SqlSession对象;
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //第四步,得到UserMapper映射接口的代理对象;
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //第五步,执行方法;
        userMapper.addUser(user);

        //第六步;提交事务;
        sqlSession.commit();

        //第七步;关闭sqlSession会话;
        sqlSession.close();
    }
}

执行;这个也没写返回值类型;
那么去数据库看看吧;数据已经成功添加

在这里插入图片描述

整体搭建

在这里插入图片描述

MybatisX插件的简易安装

那个忍者小鸟的图标是使用了MybatisX插件;
打开IDEA的设置;找到Plugins插件管理;搜索MybatisX ,在线安装之后,重启IDEA即可使用了

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:24:25  更:2021-10-25 12:25:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:57:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码